私はバニラjsで私のサーバーに小さな非同期GET要求をしました。Javascriptを非同期にしないでくださいXMLHttpRequestはデフォルトでXMLHttpRequestリクエストヘッダーを設定しますか?
var rReq = new XMLHttpRequest();
rReq.onload = function (e) {
window.updateCartnRows(e.target.response);
};
rReq.open('GET', '/usr/cart/xhrRemoveItemsByType/' + type, true);
rReq.responseType = 'text';
rReq.send();
クライアントの観点からは期待どおりに動作しますが、私のサーバーは、非同期要求としてそれを扱っていない、私はそれを設定した場合、それはXHRチェックに失敗しました。
均等jQueryの要求が正常に動作します:
$.get('/usr/cart/xhrRemoveItemsByType/' + type, function (e) {
console.log(e);
window.updateCartnRows(e);
});
X-要求-でjQueryの要求にデフォルトで設定されていた "XMLHttpRequestの" HTTPヘッダの差。このヘッダーを設定する必要について言及したもの、のためだけの真のパラメータ(例えばMDN)
rReq.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
しかし、私はドキュメントのように、このソリューションについての疑問にいる: 私はバニラJSクエリは、この行で固定することができることを見出していませんXMLHttpRequest.open()メソッドでは非同期です。
私は、XMLHttpRequestは常に非同期ではないことを理解していますが、非同期XMLHttpRequestを送信しています。 (xhrReq.open(method、url、async);を使用してasyncをtrueにする)。ドキュメントを読んだ後、私はそれが何らかの形でサーバーの非同期(httpヘッダー経由で)としてマークされると期待していました。 – SMetana
@SMetana:いいえ。 :-)サーバーは、クライアントが要求の完了を待っているかどうかを気にしません。 (また、2番目の引数に 'true'を渡すと、それを残すことはありません。引数のデフォルト値は' true'です。) –