20

contentType: "application/json; charset=utf-8",Web サービスへの ajax 投稿を行っているときに、キーと値のペアでテキストを送信しようとしてい ます。私が直面している問題は、(ユーザーからのテキストを受け入れる) パラメーターの 1 つに引用符 (") がある場合、コードが壊れることです [Eror message: Invalid object passed in ] 。これまでのところ、成功せずにこれらを試しました

var text = $("#txtBody").val(); 
var output1 = JSON.stringify(text); 
var output2 = text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); 

jquery ajax投稿の特殊文字をエスケープする方法についてのアイデアはありますか?

4

5 に答える 5

35

なぜ使用しないのescapeですか?

escape(text);

https://developer.mozilla.org/en/DOM/window.escape

編集!!!!

コメントで述べたように、これは非推奨です。

非推奨の escape() メソッドは、特定の文字が 16 進数のエスケープ シーケンスに置き換えられた新しい文字列を計算します。代わりに、encodeURI または encodeURIComponent を使用してください。

代わりに、次のいずれかを使用します。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURI

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent

于 2012-04-12T23:14:28.877 に答える
4

私は同じ問題を抱えていましたが、それを解決するために、ajax 呼び出しの方法を変更しました。

私は次のようなものを持っていました

var datatosend = "Hello+World";

$.ajax({
    "type": "POST", 
    "data": "info=" + datatosend 

そして、post info=Hello World を送信し、文字 + を空白に置き換えます。

だから私はそれを正しいjson文字列に変更します

$.ajax({
    "type": "POST", 
    "data": {"info":datatosend}, 

そして今それは動作します。info=Hello+World

于 2014-03-25T14:36:05.987 に答える
3

2020年アップデート

MDN から取得した例であるencodeURIComponentを使用します。

// encodes characters such as ?,=,/,&,:
console.log(encodeURIComponent('?x=шеллы'));
// expected output: "%3Fx%3D%D1%88%D0%B5%D0%BB%D0%BB%D1%8B"

console.log(encodeURIComponent('?x=test'));
// expected output: "%3Fx%3Dtest"

完全なURIを期待するencodeURIも一見の価値があります。

私の以前の提案は、escape()メソッドを使用することでしたが、現在は廃止されており、まもなく削除される予定です。

プログラマーは、新しい ECMAScript コードを作成するときに、これらの機能や動作の存在を使用したり、想定したりしないでください。

詳細: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/escape

于 2012-04-12T23:14:10.437 に答える