の順序は、HTTPレスポンスのヘッダから値を読み込み、_ecpopという変数を設定し、後の操作のためにそれを使用するために、AJAXを呼び出すプログラムである混乱させるグローバルAjaxの遅延は、だから私は定義され</p> <p>...ここでの操作
var _ecpop="";
として_ecpopと呼ばれる変数、その後、ここでは、AJAX呼び出しコードです:
if (typeof XMLHttpRequest != "undefined") {
_ec_req = new XMLHttpRequest();
} else if (window.ActiveXObject) {
_ec_req = new ActiveXObject("Microsoft.XMLHTTP");
}
// make the request
_ec_req.open("GET", requestString, true);
// function to deal with response
_ec_req.onreadystatechange = function() {
if (_ec_req.readyState==4)
{
if (_ec_req.status==200)
{
var respHeaders = _ec_req.getAllResponseHeaders();
// strip out unnecessary headers
respHeaders = respHeaders.replace (/\n/g,"|X|");
var beg = respHeaders.indexOf("ECAcc (");
_ecpop = respHeaders.substring(beg+7,beg+10);
//make an if statement here...
console.log(_ecpop);
}
}
}
console.log(_ecpop);
とコードの残りの部分は_ecpop使用しています。
問題はブラウザが_ecpop = ""でコードの残りの部分を実行することです。最初の2番目のconsole.log(_ecpop);空を返し、最初のconsole.log(_ecpop)を返します。正しい値を返します。
私はそれを回避する方法を知っている人はいますか?それはとても刺激的です...
ありがとう、
Amir。
Firefoxで少なくとも動作しません – Amir
最新のバージョンのスクリプトを使用していることを確認するには、ブラウザのキャッシュをクリアしてください。問題が解消されない場合は、Firebugコンソールでネットワーク要求を調べた後、問題に関する詳細情報を投稿してください。 –
ここに問題がありました...私は_ec_req.send(null)をconsole.log(_ecpop)の前に呼び出す必要があります(後ではありません) – Amir