-4

我的问题是,当用户点击网站上的链接时,我使用 jquery 来捕捉事件点击和 ajax 来更新数据库,如果我这样做,由于等待响应表单服务器,这将需要一些时间

$.ajax({
success: function() {
...
window.href = link;
}
});

我想要类似的东西

$.ajax({
alreadysend: function() {
...
}
});

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

编辑:我解决了我的问题,我需要在 jQuery 上努力工作,谢谢大家

4

4 回答 4

4

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

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

于 2012-07-08T14:30:23.553 回答
1

$.ajax为什么不直接在行后调用你想调用的函数呢?像这样:

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

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

于 2012-07-08T14:29:36.440 回答
1

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

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

// do something immediately after 

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

于 2012-07-08T14:30:40.453 回答
0

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

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

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

于 2012-07-08T14:38:20.147 回答