ajax 呼び出し (POST) のカスタム リクエスト ヘッダーを設定する必要があります。私はクライアント/サーバー フレームワーク ( ZK ) の背後にいるため、プロセス全体 (open() から send() まで) をマスターすることはできません。そのため、ネイティブの「onsomething」関数をオーバーライドして、次のようにリクエスト ヘッダーのみを設定できます。
var zk_native_function_to_instanciate_a_xhr_OLD = zk_native_function_to_instanciate_a_xhr();
zk_native_function_to_instanciate_a_xhr = function() {
var xhr = zk_native_function_to_instanciate_a_xhr_OLD ();
xhr.onloadstart = function () {
if (xhr.readyState === 1) {
xhr.setRequestHeader("XX-MY-CUSTOM-HEADER", "foobarhimself");
}
}
};
これは Chrome を使用すると非常にうまく機能しますが、Firefox ではまったく機能しません。ポイントは、Firefox を使用して、「if」行にブレークポイントを配置したときにのみ、ready 状態 4 になることです。Chrome を使用すると、ブレークポイントはxhr.readyState
'1' ( xhr.OPENED
) で正常に停止し、実行時に xhr.readyState は 1 のままですxhr.setRequestHeader(...)
。
それでも、Chrome と Firefox の両方でzk_native_function_to_create_a_xhr_OLD()
、XMLHttpRequest オブジェクトのインスタンスが返されます (デフォルト属性は同じです)。
両方の呼び出し、つまり。Chrome と Firefoxのsend()
は非同期で作成されます。さらに、firebug のブレークポイントを削除すると、xhr.setRequestHeader
コンソールで次のエラーが発生するため、行に到達したように見えます。
InvalidStateError: 使用できない、または使用できなくなったオブジェクトを使用しようとしました
私の意見では、これは xhr.setRequestHeader() が呼び出された時点で xhr.readyState がすでに「4」に等しいためです...その値は 1 から 4 に人生の速度で変化します!
この問題を解決するにはどうすればよいですか? または、「xhr.setRequestHeader()」を呼び出すことができる別の方法、または何かのハンドラーで別の「プロトタイプ化可能な」方法がありますか?
どうもありがとう。