1. ホーム
  2. jquery

[解決済み] [Solved] Jquery - $.post()でcontentType=application/jsonを使用するようにするには?

2022-03-25 14:56:48

質問

jqueryで$.post()を使用するとき、デフォルトのcontentTypeがapplication/x-www-form-urlencodedであることに気づきました - 私のasp.net mvcコードはcontentType=application/jsonが必要なとき

(なぜapplication/jsonを使わなければならないかは、この質問を参照してください。 ASPNET MVC - なぜModelState.IsValidは、そのフィールドが値を持っているときに偽の"xフィールドが必要です"ですか? )

$.post() が contentType=application/json を送信するようにするにはどうすればよいですか?私はすでに多数の$.post()関数を持っているので、時間がかかりすぎるため、$.ajax()に変更したくありません。

もし私が

$.post(url, data, function(), "json") 

contentType=application/x-www-form-urlencoded のままです。 では、"json" パラメータは、contenttypeをjsonに変更しない場合、具体的に何をするのでしょうか?

試しに

$.ajaxSetup({
  contentType: "application/json; charset=utf-8"
});

これは動作しますが、私が持っているすべての$.getと$.postに影響し、いくつかは壊れる原因となります。

そこで、contentType=application/jsonを送信するように$.post()の動作を変更する方法はないでしょうか?

解決方法は?

をする必要があるかと思います。

1.ソースを修正して、$.postが常にJSONデータ型を使用するようにする。 $.ajax コール

または

2. のショートカットとなるユーティリティ関数を独自に定義する。 $.ajax 使用したい設定

または

3.上書きすることができます。 $.post function を、モンキーパッチで独自の実装に変更する。

この例のJSONデータ型は、以下のように返されるデータ型を指しています。 から の形式ではなく、サーバーの 送信 をサーバに送信します。