我使用JSON.stringify
生成一个json字符串,我的json字符串就像
jsonstring=[{"step1":[{"nm":"John & joe"},{"title":"Hello & hai"}]},{"step2":[{"desc":"1234"},{"usr":"abc@xyz.com"}]}]`
我使用&
转义\&
并通过ajax将此json字符串发送到服务器。
$.ajax({
url:"test-usr-data.php",
type:"post",
data:"usrdata="+jsonstring,
success: function(response){
console.log("data is "+response);
},
complete:function (jqXHR, textStatus){
console.log("ajax Request completed"+textStatus);
}
});
问题在于json字符串中的&
char,即使我将&
转义为\&
数据未发布到服务器但ajax请求状态成功。
我尝试从json字符串中删除&
它工作正常,数据正确地发布到服务器。
任何人都可以以正确的方式帮助我在json字符串中转义&
。
答案 0 :(得分:3)
谁曾告诉过你,通过加上反斜杠来逃避URL的工作?
jQuery会处理它,只是做
data: {usrdata: jsonstring},
仅供参考:您也可以使用encodeURIComponent
data: "usrdata=" + encodeURIComponent(jsonstring),
答案 1 :(得分:0)
URI编码&
的方法是%26
,假设0x26(38)是该字符的ASCII码。
但请不要使用data: { key: value, ... }
方式将参数传递给$.ajax
,并让jQuery为您完成所有操作。