有人可以向我解释这个JavaScript / Ajax代码的作用吗?

时间:2012-08-09 18:15:20

标签: javascript ajax

我正在学习Ajax,我正在经历this example。这是做什么的?我不明白语法variable = function(){如何将函数分配给变量?

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

4 个答案:

答案 0 :(得分:1)

当readyState更改时,如果请求已完成且响应已准备好(readyState==4)且文档已正确加载(HTTP状态代码200 = OK!),请将响应文本追加到标识为{{1的元素}}


#txtHint存储每次onreadystatechange属性更改时要自动调用的函数(或函数名称)。

readyState保存XMLHttpRequest的状态。从0到4的变化:

  • 0:请求未初始化
  • 1:已建立服务器连接
  • 2:收到请求
  • 3:处理请求
  • 4:请求已完成且响应已准备就绪

readyState获取HTTP响应代码:

  • 200:“OK”
  • 404:找不到网页

答案 1 :(得分:1)

onreadystatechange是一个回调。当特定事件发生时它会被触发。当请求就绪状态发生变化时,会发生onreadystate

简而言之onreadystate

Stores a function (or the reference of a function) to be called automatically each time the readyState property changes

现在换行 xmlhttp.readyState==4 && xmlhttp.status==200

readyState : Holds the status of the XMLHttpRequest.

 Changes from 0 to 4: 
0: request not initialized 
1: server connection established
2: request received 
3: processing request 
4: request finished and response is ready

status保持状态

200: "OK"
404: Page not found

当响应准备好并且没有问题时,xmlhttp.readyState==4 && xmlhttp.status==200条件为真

xmlhttp.responseText包含从服务器发送的响应。

因此,document.getElementById("txtHint").innerHTML=xmlhttp.responseText;会将ID为txtHint的元素的HTML更改为收到的响应。

希望以上所有有意义!!!

答案 2 :(得分:1)

我知道每个人都在说这是一个专门的回调,但你问的问题最好通过比较你所困惑的东西和一些更熟悉的代码来解答。

function myFunction()
{
    ...
}

所以我们知道调用myFunction()将运行该代码。

在Javascript中,您可以通过多种方式声明函数。这意味着:

var myFunction = function()
{
    ...
}

与上面的第一个示例完全相同。它创建了一个可以使用myFunction()调用的函数。

在你的问题中将回调添加到混音中,我们可以看到

xmlhttp.onreadystatechange = function()
{
    ...
}

只不过是将一个函数分配给对象xmlhttp的onreadystatechange属性并包含代码。这意味着每次xmlhttp对象发生状态更改时,都会调用函数中的代码。

答案 3 :(得分:1)

我想发表此评论:I've never been able to understand callbacks.

考虑这个比喻:

  

你需要租用刚出现在VHS上的那部电影,所以你   拨打Blockbuster并询问服务员是否有副本。可悲的是   尽管如此,他们还是忙于与成千上万的David Bowie粉丝打交道   谁试图同时租用“迷宫”,他不是   有时间为您查找信息。相反,他要求   你的电话号码。在未来的某些时候成群结队的   人们离开了,他有时间,他查找你需要的信息,   并按你提供的号码给你回电话。原来这部电影是   虽然售罄,但他建议改为“暗水晶”。

在你的情况下,你正在处理一个需要很长时间才能完成工作的实体,因为它需要与远程服务器通信,所以它基本上会要求你提供你的电话号码,以便在完成后你被叫到返回原样,请求数据。

现在更有意义了吗?