AJAX -

2012-02-23 36 views
0

在大多数例子我在网上找到的使用XMLHttpRequest(新手)命令的命令,我看到这样的事情:AJAX -

ajaxRequest.onreadystatechange = function() { 
    if(ajaxRequest.readyState == 4) { 
     document.myForm.time.value = ajaxRequest.responseText; 
    } 
} 

ajaxRequest.open("GET", "serverTime.php", true); 
ajaxRequest.send(null); 

这怎么可能,如何做到这一点的代码的工作,当“变化状态“ 属性被检查 之前 打开和发送命令被执行? 我知道它有效......但在执行“打开”和“发送”后,流程如何返回到“检查状态 状态”。

我希望得到任何帮助

提前许多感谢:-)

回答

0

因为onreadystatechange的是一个事件,该代码不会被调用,直至准备状态的变化,这将发生在一些点在未来请求完成时。

+0

行,我明白,但是顺序是: 首先,检查状态 然后,打开并发送命令 ......不应该说,它是: 打开 - >发送 - >检查??? – Portishead 2012-02-23 12:44:23

+0

不,因为您想要定义在请求完成之前请求完成时将运行的代码,否则当就绪状态更改时,请求将不知道要运行什么(并且不会运行任何内容)。 – devdigital 2012-02-23 12:53:17

+0

阅读http://en.wikipedia.org/wiki/Event_%28computing%29和事件处理程序。 – devdigital 2012-02-23 12:57:03

0

This is exactly the flow of AJAX

发出请求

你有你的崭新的XMLHttpRequest对象;现在拿它来旋转。首先,你需要一个你的网页可以调用的JavaScript方法(比如当用户键入文本或者从菜单中选择一个选项时)。然后,您几乎可以在所有Ajax应用程序中遵循相同的基本轮廓:

  1. 从Web窗体获取所需的任何数据。
  2. 构建要连接到的URL。
  3. 打开到服务器的连接。
  4. 设置一个函数让服务器在完成时运行。
  5. 发送请求。

处理响应

现在,您需要用实际服务器的响应处理。你真的只需要在这一点上知道两件事情:

* Don't do anything until the xmlHttp.readyState property is equal to 4. 
* The server will stuff it's response into the xmlHttp.responseText property. 
+0

如图所示:浏览器发送请求 - >服务器处理请求并发回数据 - >浏览器处理从服务器传送的请求。 但是在代码中......状态更改被检查,甚至在任何事情被发送到服务器之前 – Portishead 2012-02-23 12:51:56

+0

send(string),将请求发送到服务器。 字符串:仅用于POST请求,要将POST数据像HTML表单一样添加一个带有setRequestHeader()的HTTP标头。在send()方法中指定要发送的数据:,, xmlhttp.setRequestHeader(“Content-type”,“application/x-www-form-urlencoded”); xmlhttp.send(“fname = Henry&lname = Ford”);更多检查此链接,你将足够了解http://www.w3schools.com/ajax/ajax_xmlhttprequest_send.asp – 2012-02-23 15:04:50