WebサービスへのcontentType: "application/json; charset=utf-8",
ajax投稿を行いながら、キーと値のペアでテキストを送信しようとしています。私が直面している問題は、パラメーター(ユーザーからのテキストを受け入れるパラメーター)の1つが引用符( ")を持っている場合、コードが壊れる[エラーメッセージ:無効なオブジェクトが渡された]です。
var text = $("#txtBody").val();
var output1 = JSON.stringify(text);
var output2 = text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
Jquery ajax投稿の特殊文字をエスケープする方法に関するアイデアはありますか?
なぜ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
この質問を見つける人のために:Webから削除されたエスケープメソッドを使用しないでくださいUse encodeURIComponent()
またはencodeURI()
代わりに
encodeURIComponent()
encodeURI()
私は同じ問題を抱えていましたが、それを解決するために、ajax呼び出しの方法を変更しました。
私のようなものがありました
var datatosend = "Hello+World";
$.ajax({
"type": "POST",
"data": "info=" + datatosend
そして、情報info = Hello Worldを送信し、文字+を空白に置き換えます。
それで正しいJSON文字列に変更します
$.ajax({
"type": "POST",
"data": {"info":datatosend},
そして今、それは動作します。 info = Hello + World
値をエスケープするのに役立つ関数 escape(var) が既にあります。あなたが話している目的には十分なはずです
var output2 = escape(text);