2010-06-27 77 views
0

嘿,我现在用的是下面的函数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"); 
     } 
    } 
}); 

,这是一个按钮(这是一个简单的链接)的单击事件中添加,但这里的问题是它不会等待响应,而是直接调用成功函数。请帮忙!!

+0

嘿,我刚刚找到答案,如果你从点击甚至按钮返回一个错误,那么问题就不会发生。但是,这里的按钮不是传统的HTML提交按钮,只是一个超链接。 – 2010-06-27 07:11:48

回答

0

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

0

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

您是否在浏览器中使用过开发者工具(firefox - firebug,ie - f12,chrome - resources tab,donno others)来添加断点或监控ajax调用?

+0

是的...我试过..所有阿贾克斯请求正在全力..精细....! – 2010-06-27 13:04:28

2

您有2个选项对于这一点,你发现他们的一个:)

您可以return false,就像你有:

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

这将停止事件死在其轨道上,它赢得了” t泡沫,不会继续做任何事情。或者......你可以把它泡,尽一切照常,只是没有按照使用event.preventDefault()的链接,像这样:

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

这是几个event methods一个,无法用语言形容它比the API does更好:

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

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

这是更好的途径,如果有可能是必然其他事件处理程序,如果没有,可能是.live()事件处理程序,等等......与return false,他们不会执行,这个他们会。