[英]JSON parse gives error occasionally on parsing string
我有相同的輸入字段,用戶可以在其中輸入一些數據。 接下來,我的代碼將其轉換為 JSON 並將其發送到服務器。
$("#submit").click(function(){
var inp = $("#inpTxt").val();
if(inp == null || inp == ""){
return;
}
jsonResult = JSON.parse('{"data": "' + inp + '"}');
$.ajax({
data : jsonResult,
...
});
});
這里的問題是有時上面的代碼有效,有時卻不起作用。 大多數時候,我測試了代碼,它就像一個魅力,但在生產中,我不斷收到多次報告的錯誤。
我還沒有弄清楚可能的原因。
注意:代碼的某些部分在上面沒有共享,而只是問題的一部分。
由於我確定的問題,所以讓我也在這里陳述一個答案。 您只需要在遇到的所有轉義字符之前添加一個額外的 \\ ,例如:
\\b : 退格
\\f : 換頁
\\n : 換行
\\r : 回車
\\t : 水平制表符
\\v : 垂直制表符 " : 雙引號 \\ : 反斜杠
您可以通過以下代碼執行此操作:
inp = inp.replace('"','\\\"');
或者inp.replace('\\','\\\\\\\\');
其他角色依此類推。
當您使用 JSON.Parse 函數時,您需要自己處理特殊字符。 因此,如果有人在您的 inpTxt 輸入中放入 " ,則會導致解析該字符串時出錯。
您應該執行類似以下代碼的操作以避免解析錯誤並讓 javascript 正確處理字符串中的特殊字符。
jsonResult = { data: inp };
我創建了一個 JS 小提琴以使其更容易理解。 https://jsfiddle.net/ub3w0a8x/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.