これは本当に奇妙です。コードに複数の$.post()
がありますが、jsonパラメーターをx-www-form-urlencoded
代わりに、したがって動作しません。
コードは次のとおりです。
$.post("/Route/SaveTransportProperties", { properties: JSON.stringify(propArray), currTravelBox: JSON.stringify(travelBoxObj), accessToken: getAccessToken()}, function(data)
{
//DO STUFF
});
XHRはFirefoxで次のようになります。
なぜこれが起こっているのでしょうか?また、タイプを「json」として強制しましたが、どちらも機能しません。
データをjsonとして送信する場合は、$。ajax関数を使用します
タイプpostおよびdataType jsonを指定できます。
$.ajax({
url: "mydomain.com/url",
type: "POST",
dataType: "xml/html/script/json", // expected format for response
contentType: "application/json", // send as JSON
data: $.param( $("Element or Expression") ),
complete: function() {
//called when complete
},
success: function() {
//called when successful
},
error: function() {
//called when there is an error
},
});
Ajaxドキュメントから取得
http://api.jquery.com/jQuery.ajax/
contentTypeString
Default: 'application/x-www-form-urlencoded; charset=UTF-8'
$。post() はフォームのようなリクエストを送信するためのものです。 $。ajax は、あなたが望むものを送るためのものです。詳細については、$.ajax
ページのcontentType
を参照してください。
見積もり:
サーバーにデータを送信するときは、このコンテンツタイプを使用します。デフォルトは「application/x-www-form-urlencoded」で、ほとんどの場合これで問題ありません。 content-typeを$ .ajax()に明示的に渡すと、(データが送信されない場合でも)常にサーバーに送信されます。データは常にUTF-8文字セットを使用してサーバーに送信されます。サーバー側でこれを適切にデコードする必要があります。
成功関数でデータをJSONに強制することもできます:data = JSON.parse(data);
これも私のために働く
$.ajax({
url: "mydomain.com/url",
type: "POST",
dataType: "xml/html/script/json", // expected format for response
contentType: "application/json", // send as JSON
data: JSON.stringify(data),
complete: function() {
//called when complete
},
success: function() {
//called when successful
},
error: function() {
//called when there is an error
},
});