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的第二个函数丢失了变量customer1的值,但它很好地到达了something.php。有什么不对?

谢谢你。

4

2 回答 2

1

AJAX 是异步的。你触发了 AJAX 调用,但是 . 立即send()返回,无需等待响应。因此,您的代码继续执行该调用,而无需等待来自服务器的任何内容。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 回答