如何捕获事件ajax发送到服务器,而不是等待服务器响应

时间:2012-07-08 14:26:40

标签: php jquery ajax events

我的问题是,当用户点击网站上的链接时,我使用jquery来捕获事件click和ajax来更新数据库 如果我做这样的事情,由于等待响应形式服务器

,它将花费一些时间
$.ajax({
success: function() {
...
window.href = link;
}
});

我想要像

这样的东西
$.ajax({
alreadysend: function() {
...
}
});

我阅读了文档ajax,但我无法找到解决问题的方法。

编辑:我解决了我的问题,我需要努力学习jQuery,谢谢大家

4 个答案:

答案 0 :(得分:4)

默认情况下这样做,因为Ajax是异步的!如果您希望代码执行,无论服务器是否已到达并响应,只需将执行代码放在Ajax块之后。

另一方面,如果您想知道用户是否已经进行了提交操作,您可以使用应用程序范围变量来切换调用和已完成的事件。 (即当用户启动Ajax调用时设置为true。完成后,设置为false。禁止调用我已经为真)

答案 1 :(得分:1)

为什么不在$.ajax行之后调用要调用的函数?像这样:

$.ajax({ ... });
do_things();

编辑如果您想进行重定向,则必须等待AJAX​​调用返回以确定它是否成功。如果你不关心它是否成功,只关心它是否正在进行调用,你可以在$ .ajax调用之后将它放在行中,因为调用是异步发生的。无论如何,我们需要更多关于你想要达到的目标的信息。

答案 2 :(得分:1)

只需在调用$ .ajax后调用您的代码:

$.ajax({success: function(){
    // done after server response
}});

// do something immediately after 

Ajax调用是异步的,因此您的脚本不会被阻止。

答案 3 :(得分:0)

我不是100%确定你要做什么,但是如果你想在代码继续之前等待ajax调用返回,你可以通过将async设置为false来设置它虽然值得注意的是,这有点适得其反,并且在jQuery 1.8中被弃用。

http://api.jquery.com/jQuery.ajax/

  

默认情况下,所有请求都是异步发送的(即设置为   默认为true)。如果需要同步请求,请将此选项设置为   假。跨域请求和dataType:“jsonp”请求没有   支持同步操作。请注意,同步请求可能   暂时锁定浏览器,在请求时禁用任何操作   活跃。从jQuery 1.8开始,不推荐使用async:false。