0

を使用JSON.stringifyしてjson文字列を生成しています。json文字列は次のようになります。

jsonstring=[{"step1":[{"nm":"John & joe"},{"title":"Hello & hai"}]},{"step2":[{"desc":"1234"},{"usr":"abc@xyz.com"}]}]` 

私はこのjson文字列をエスケープ&して、ajaxを介してサーバーに送信しています。\&

$.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文字列でエスケープする正しい方法で私を助けることができますか?

4

2 に答える 2

3

バックスラッシュを前に付けることでURLの機能をエスケープすると誰が言ったのですか?

jQueryがそれを処理します。

data: {usrdata: jsonstring},

参考:あなたも使うことができencodeURIComponentます

data: "usrdata=" + encodeURIComponent(jsonstring),
于 2012-10-07T15:41:07.680 に答える
0

0x26(38)がその文字のASCIIコードであるとする&と、aをURIエンコードする方法は次のようになります。%26

ただし、代わりにdata: { key: value, ... }パラメーターを渡す方法を使用し$.ajaxて、jQueryにすべてを任せてはいけません。

于 2012-10-07T15:43:08.077 に答える