2

AJAXヘッダーを変更したいので、$.ajaxPrefilter次を試しました:

$.ajaxPrefilter(function (options, originalOptions, jqXHR) {
    delete options.headers["myOwnHeader1"];
    options.headers["myOwnHeader2"] = "test";
});

ネットワーク コンソール (Chrome) では、myOwnHeader2が設定され、設定されていmyOwnHeader1ません。ただし、次の例外がスローされます: Uncaught TypeError: Cannot convert null to objectonoptions.headers["myOwnHeader2"] = "test";

4

1 に答える 1

1

optionsオブジェクトには必ずしもプロパティが含まれているとは限りません-headersグローバル$.ajaxSettingsまたは現在の (元の) オプションで指定されている場合のみ。だからあなたの選択肢は

  • を使用して$.ajaxSetup({headers: {}});、おそらくmyOwnHeader2既に設定されている
  • if ("headers" in options)削除/拡張操作をブロックにラップする
  • ヘッダー オブジェクトが存在しない場合は、プレフィルターで動的に作成します。

options.headers = options.headers || {};
delete options.headers["myOwnHeader1"];
options.headers["myOwnHeader2"] = "test";
于 2013-02-26T02:56:01.047 に答える