jQuery で $.post() を使用すると、デフォルトの contentType が application/x-www-form-urlencoded になっていることに気付きました。ただし、asp.net mvc コードでは contentType=application/json にする必要があります。
(なぜ application/json を使用する必要があるかについては、この質問を参照してください。ASPNET MVC - そのフィールドに値があるのに、ModelState.IsValid が false で「x フィールドは必須です」と表示されるのはなぜですか?)
$.post() で contentType=application/json を送信するにはどうすればいいでしょうか? すでに多数の $.post() 関数があるので、時間がかかりすぎるため $.ajax() に変更したくありません。
もし私が試したら
$.post(url, data, function(), "json")
contentType=application/x-www-form-urlencoded のままです。では、contenttype を json に変更しない場合、「json」パラメータは具体的に何をするのでしょうか?
もし私が試したら
$.ajaxSetup({
contentType: "application/json; charset=utf-8"
});
これは機能しますが、私が持っているすべての $.get と $.post に影響し、一部が壊れる原因になります。
では、$.post() の動作を変更して contentType=application/json を送信する方法はあるのでしょうか?
ベストアンサー1
$.ajax({
url: url,
type: "POST",
data: JSON.stringify(data),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(){
...
}
})
見る :jQuery.ajax()