0

私は次のようなコードを持っています:

function doSomething(customer)
{

var xmlhttp = new getXMLObject();

var customer1 = customer;

xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200)
  {
     document.getElementById("txtSomething").innerHTML=xmlhttp.responseText;
  }
}

var params = "customer=" + customer;

xmlhttp.open("POST","/something.php", true);

xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

xmlhttp.setRequestHeader("Content-length", params.length);

xmlhttp.setRequestHeader("Connection", "close");

xmlhttp.send(params);

post.call(this, customer1);

}

一部の実行では、postと呼ばれる 2 番目の関数が変数customer1の値を失いますが、それはsomething.phpに到達します。何か問題がありますか?

ありがとうございました。

4

2 に答える 2

1

AJAX は非同期です。AJAX 呼び出しを開始しますが、. 応答を待たずにIMMEDIATELYsend()を返します。そのため、コードは続行し、サーバーからの何も待たずにその呼び出しを実行します。post.call()

于 2013-05-27T17:21:45.113 に答える
0

いくつかのコールバックをセットアップして応答を確認できるjQuery Ajaxを試しましたか?

そして、それはおそらくあなたのコードよりもクロスブラウザーです! :)

これだけでかっこいいものが作れます。例を確認してください:

$.ajax({
    type: "POST",
    url: "some.php",
    data: { name: "John", location: "Boston" }
}).done(function( msg ) {
    alert( "Data Saved: " + msg );
});

ここで確認してください。

于 2013-05-27T17:27:03.657 に答える