我的问题是,当用户点击网站上的链接时,我使用jquery来捕获事件click和ajax来更新数据库 如果我做这样的事情,由于等待响应形式服务器
,它将花费一些时间$.ajax({
success: function() {
...
window.href = link;
}
});
我想要像
这样的东西$.ajax({
alreadysend: function() {
...
}
});
我阅读了文档ajax,但我无法找到解决问题的方法。
编辑:我解决了我的问题,我需要努力学习jQuery,谢谢大家
答案 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。