json data char'&'扰乱ajax发布请求数据

时间:2012-10-07 15:38:03

标签: php javascript jquery json

我使用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字符串中转义&

2 个答案:

答案 0 :(得分:3)

谁曾告诉过你,通过加上反斜杠来逃避URL的工作?

jQuery会处理它,只是做

data: {usrdata: jsonstring},

仅供参考:您也可以使用encodeURIComponent

data: "usrdata=" + encodeURIComponent(jsonstring),

答案 1 :(得分:0)

URI编码&的方法是%26,假设0x26(38)是该字符的ASCII码。

但请不要使用data: { key: value, ... }方式将参数传递给$.ajax,并让jQuery为您完成所有操作。