从我在MDN中阅读的参考资料中可以看到,
如果为TRUE(默认值),则在服务器响应尚未到达时,将继续执行JavaScript函数。
这是AJAX中的A。
我一直在使用AJAX,但是当我读到它时,我有点困惑。我认为问题可能出在我不清楚AJAX概念。我当然知道AJAX不会刷新页面,这意味着到服务器的连接和响应是完全在后台完成的。
但是我可以想象根据该引用发生的事情是,如果我的JavaScript中有这样的代码:
//true, therefore process the function while server retrieves url
var xmlResponse;
var url = "http://example.com/file.xml";
xml_req.open("GET", url, true);
xml_req.onreadystatechange = function() {
if(xml_req.readyState == 4 && xml_req.status == 200) {
if(xml_req.responseText != null)
xmlResponse = xml_req.responseXML; //server response may not yet arrive
else {
alert("failed");
return false;
}
};
xml_req.send(null);
从服务器仍在检索数据的意义上来说,这是否意味着xmlResponse可能是未定义的?有人可以解释一下AJAX技术中执行的真正流程是什么吗?提前致谢。
我在这里写了更详细的文章,但这是基本思想。
将其设置为true意味着您正在发出异步请求。这意味着直到http请求完成后,代码才会暂停。同步调用会锁定浏览器,因此没有其他任何运行。这可能会导致问题,因此人们更喜欢异步。
XHR对象向我们更新了它正在做什么。它为我们提供了onreadystatechange事件的更新。我们向其注册一个功能,以便我们跟踪其状态。onreadystatechange被调用了4次。每个都有不同的状态
0 = uninitialized
1 = loading
2 = loaded
3 = interactive
4 = complete
当readystate为4时,数据对我们可用。
现在,在您发布的代码中,它正在检查完整状态,并确保状态为200 [确定]
if(xml_req.readyState == 4 && xml_req.status == 200){
如果您在返回之前尝试在代码的其他地方使用xmlResponse的值,则该值将不确定。一个例子
ml_req.send(null);
alert(xmlResponse );
XMLHttpRequest文章的第一篇文章可能对您来说很不错。关于xmlhttpreq的Apple文章
问题内容: 我如何能够覆盖该方法,然后捕获并更改其参数? 我已经尝试过代理方法,但是它没有用,尽管删除了在调用时打开的重写: 问题答案: 您不是要修改继承的方法,而只是将方法添加到实际上从未使用过的方法。 我在facebook中尝试了此代码,因此能够捕获到请求: 所以是的,需要将open方法添加到(window.XMLHttpRequest.prototype)而不是(window.XMLHttp
问题内容: 我有一个方法可以说: 正如您所注意到的,我有一个名为align的参数。在此方法内部,我将对值是“左”还是“右”有一些if条件。.将参数设置为String,显然我可以传递任何字符串值..我想知道是否有可能将Enum值用作方法参数,如果是,如何? 以防万一有人想到这个;我考虑过使用布尔值,但我并不喜欢它。首先,如何将true / false与left / right关联?(好的,我可以使用
问题内容: 在C#中,如果希望方法具有不确定数量的参数,则可以使方法签名中的最终参数为a ,以使方法参数看起来像数组,但允许使用该方法的每个人传递尽可能多的该类型的参数如来电者所愿。 我相当确定Java支持类似的行为,但是我不知道如何做到这一点。 问题答案: 在Java中,它称为varargs,其语法看起来像一个常规参数,但类型后面带有省略号(“ …”): vararg参数必须 始终 是方法签名中
问题内容: 我需要帮助使此类型适用于任何类型。 我有一个函数,我需要接受具有属性的其他类型。 我尝试使用接口,但不适用于我的财产情况。这是代码: 我明白了 错误prog.go:39:在Count的参数中无法将人类([人类]类型)用作[]哺乳动物 有关更多详细信息,请参见Go Playground,网址为http://play.golang.org/p/xzWgjkzcmH 问题答案: 使用接口而不
问题内容: 我正在尝试获取Java程序的方法参数的值。我正在使用ASM来检测字节码并获取这些值。但是,我遇到了一些麻烦。 这是用于检测代码的visitCode()方法。它在做什么是: 创建一个空数组来存储收集的参数。 对于每个参数,将其值加载到数组中。 将此数组发送到我的代理的OnMethodEntry方法(将在其中使用值)。 。 但是,当该方法显然具有多个参数时,此方法不起作用。 获得的类文件显
NodeJS noob正在签入。我正在查看.listen方法的文档,该方法的格式如下: 端口/主机名的解释指出: 开始接受指定端口和主机名上的连接。如果省略主机名,服务器将接受指向任何IPv4地址的连接 我不完全理解“如果省略主机名,服务器将接受指向任何IPv4地址的连接”部分。服务器如何接受到任何IP地址的连接?是服务器接受什么而不是它能接受什么让我觉得奇怪吗?