2010-06-27 78 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,他們不會執行,這個他們會。