5


3

私は周りを見回しました、そして、私はこれに対する優雅な解決策を見つけようとしています、そして、私はまだ1つ見つけていません。 私は.NETを使用していて、呼び出しをしようとしているパラメーターを必要とするASMX Webサービスを持っています。

私はサービスを呼び出すためにクライアントサイドでjQueryを使っています、そして私のjQueryコードはこのようなものに見えます:

$。ajax({type: "POST"、contentType: "application / json; charset = utf-8"、dataType: "json"、url: "/Reviews/HotelReview.asmx/SubmitReview"、data: "{'name ':' "name" '、 ""' info ':' "info" '} "、processData:true、beforeSend:function(){startSubmit();}、complete:function(){submitComplete();}、エラー:function(xhr){submitError(xhr);}、成功:function(msg){submitSuccess(msg.d);}});
  • name または info '*文字(一重引用符)が含まれている場合を除き、これは非常にうまく機能します。 私のJSONはフィールドの値の終わりを定義しており、それは一重引用符であるため、非常に単純です。 これらのフィールドのどちらかに一重引用符が含まれていると、「Internal Server Error」と表示されますが、http://en.wikipedia.org/wiki/Fiddler_%28software%29 [Fiddler]を使用した詳細検査で結果が示されました一重引用符の問題を示しているので、それらを投稿する必要はありません。

クライアント側で一重引用符を削除してサーバー側に戻すために、一時的に何かを配置しましたが、これは洗練された方法ではありません。 私のコードが機能するように、これらの単一引用符をエスケープするためのもっとエレガントな方法はありますか?

1 回答


9


仕様では、JSONではキーと値を二重引用符で囲むことしかできないため、二重引用符で試してください。 私はあなたのエラーが解決されると確信しています。

実際の値で特殊文字をエンコード/エスケープするには、 json.jsを使用するとよいでしょう。 「たとえば、http://www.json.org/js.htmlのstringifyメソッドなどです。