2012-02-06 92 views
0

美好的一天!解决方案,以避免将ajax请求设置为同步?

我想问一下除了设置一个ajax请求同步吗?我正在使用prototype.js,显然我遇到了一个问题,其中删除我的警报语句(调试目的)会产生意外的输出。然后我再次发出警报声明,令人惊讶的是,输出结果再次正常。我搜索了互联网,发现实际发生的事情是服务器和客户端之间的任务不完整,需要在下一个Ajax请求触发/运行之前完成。我试图让这个特定的Ajax请求同步,幸运的是我得到了我的预期结果。但是,我注意到网页加载速度变慢,我读过一些设置ajax请求同步的文章不好。有没有解决这个问题?

在此先感谢!

+0

它的确涉及到代码的一些重构,但是如果使用纯JS,则需要为Ajax请求的'onreadystatechange'定义一个回调函数,并从中执行下一步处理 - 任何好的Ajax教程应该如何解释。但是由于你使用的是Prototype,所以你可以使用库函数使它更容易:http://prototypejs.org/api/ajax/request(看看'onSuccess'回调函数)。 – nnnnnn 2012-02-06 09:18:11

+0

嗨,我实际上使用onSuccess和onFailure回调。你认为我应该使用其他吗?这里是发生了什么,我需要从另一个选择填充下拉列表到另一个下拉列表。在此之后,我需要选择一个选项作为默认的应该填充下拉列表。我认为显示默认选项的设置是徒劳的,因为它在列表填充之前触发。我有道理吗?提前致谢! – Oneb 2012-02-06 10:03:20

+0

填充列表后,在'onSuccess'回调中设置默认值。 (对不起,我不太了解Prototype,更像是一个jQuery人,但我认为这个概念几乎相同)。 – nnnnnn 2012-02-06 11:23:25

回答

0

是您的问题“如何将ajax请求设置为异步?”
如果您使用$阿贾克斯(因为同步请求停止从工作到这个请求完成其他事情)

答案>>
您可以设置非同步到假如下

$。阿贾克斯({
网址: “some.php”,
异步:真
})

或基于XMLHTTPRequest的简单代码

var url =“要调用的URL”;
var request = new XMLHttpRequest();
request.open(“GET”,url,true);

+0

嗨,美好的一天!感谢这些信息,但我需要的是解决建议,以便我不会将我的ajax请求设置为“synchrounous”。 – Oneb 2012-02-06 10:12:55

+0

'$ .ajax'是jQuery,这个问题是关于Prototype的。 – JaredMcAteer 2012-02-07 01:13:10