Base64解決json特殊字符parsererror問題

最近在做商城項目時遇到一個json返回報錯的問題,經過檢查,發現是沒有對特殊字符進行處理,到時json被截斷,從而導致ajax讀取時報錯。最后,通過base64對特殊字符進行編碼才予以解決,現分享在此,供君參考。

業務流程是:前端頁面中有一個“收貨信息”表單供用戶填寫,然后以otip字段存儲在Mysql數據庫中,服務端使用PHP做了一個webservice接口,其中通過json的方式返回otip字段,前端通過ajax的異步方法獲取上述json并予以展示。

問題:當otip為基本內容時,測試一切OK。但當在表單中換行時,ajax無法正確輸出結果,頁面無法正常顯示。

排查:ajax的error方法返回"200 4 parsererror",通過瀏覽器直接訪問webservice時,接口數據可以正常返回。

分析:推測是由于otip中存在換行等特殊字符導致jason數據格式被截斷,導致ajax中的json類型無法準確識別。

思路:在PHP中對otip進行base64編碼,然后在js中進行解碼,具體代碼如下:

PHP側:

$tips = urlencode(base64_encode($data["otip"]));

$result = array("tip"=>$tips);

echo urldecode(json_encode($result));

js側:

var base = new Base64();

$("#tipInput").val(base.decode(response.tip));

關于Base64的定義,百度上有很多實現。

至此,該問題已經解決,讀者可以參考。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,869評論 18 139
  • 把當前目錄作為Root Document只需要這條命令即可:php -S localhost:3300 也可以指定...
    絢爛的時光閱讀 744評論 0 1
  • PHP7 已經出來1年了,PHP7.1也即將和大家見面,這么多好的特性,好的方法,為什么不使用呢,也希望PHP越來...
    夢幻_78af閱讀 2,122評論 1 10
  • php usleep() 函數延遲代碼執行若干微秒。 unpack() 函數從二進制字符串對數據進行解包。 uni...
    思夢PHP閱讀 2,001評論 1 24
  • 漫天的雪花飛舞 你在落雪的黃昏舞步 繞過林間的老樹 林稍抖雪的烏雀相妒 僅他是,掌心化雪的幸福 清晨的荷間采露 尋...
    夜含閱讀 306評論 0 4