调用jquery回调而不等待响应

时间:2010-06-27 07:10:45

标签: ajax jquery

嘿,我正在使用以下功能,

$.ajax({
    type: 'POST',
    url: "/User/SaveMyDetailsSettings",
    data: mySettings.MyDetailsForm.serialize(),
    success: function (data) {
        alert("callback");
        alert(data);
        if (data == "Success") {
            window.location = "User/MySettings";
        }
        else if (data == "Failed") {
            alert("Sorry!! Failed to submit your settings");
        }
    }
});

并且这是在按钮的click事件(这是一个简单的链接)上添加的,但是这里的问题是它不等待响应而是直接调用success函数。请帮忙!!

3 个答案:

答案 0 :(得分:2)

你有2个选项,你找到了其中一个:)

您可以像return false一样:

$("a").click(function() {
  //do stuff
  return false;
});

这会阻止事件死亡,它不会起泡,也不会继续做任何事情。或者......你可以让它泡泡,做它通常做的所有事情,而不是使用event.preventDefault()跟随链接,如下所示:

$("a").click(function(e) { //e is the argument to the function!
  //do stuff
  e.preventDefault();
});

这是event methods中的一个the API does,无法比.live()更好地描述:

  

说明:如果调用此方法,则不会触发事件的默认操作。

     

例如,单击的锚点不会将浏览器带到新的URL。我们可以使用event.isDefaultPrevented()来确定此方法是否已被此事件触发的事件处理程序调用。

如果可能绑定其他事件处理程序,或者如果可能有{{3}}事件处理程序等等return false,则这是更好的路径,他们不会他们会这样做。

答案 1 :(得分:0)

嘿,我刚刚找到答案,如果你从点击按钮返回一个假,那么这个问题就不会发生了。但是,这里的按钮不是传统的HTML提交,按钮,它只是一个超链接,只有

答案 2 :(得分:0)

从click事件返回false应该可以防止发生任何默认操作。但它影响ajax调用没有意义。

您是否在浏览器中使用了开发人员工具(firefox - firebug,即-f12,chrome-resources选项卡,不知道其他人)来添加断点或监控ajax调用?