2011-03-21 40 views
0

爲什麼會出現這種帶回來了一個錯誤:jQuery的AJAX

jQuery('#the_form').submit(function() { 
    jQuery.ajax({ 
     url: 'stats.php?increment=true', 
     success: function() { 
      alert('Load was performed.'); 
     }, 
     error: function() { 
      alert('Load wasnt performed.'); 
     } 
    }); 

    return true; 
}); 

,這不(回報是假的,一切是一樣的):

jQuery('#the_form').submit(function() { 
    jQuery.ajax({ 
     url: 'stats.php?increment=true', 
     success: function() { 
      alert('Load was performed.'); 
     }, 
     error: function() { 
      alert('Load wasnt performed.'); 
     } 
    }); 

    return false; 
}); 

我如何在提交之前調用該腳本(對外部行爲)?

回答

5

您已訂閱表格的.submit事件。在第一種情況下,您返回true,這意味着您要離開要運行的默認操作,即將窗體提交到服務器並將瀏覽器重定向到stats.php。由於瀏覽器會立即重定向,您的AJAX調用可能永遠沒有時間完成。

在第二種情況下,您將返回false,這意味着您將取消默認表單提交,並且您發送的AJAX請求具有足夠的時間來執行。

+0

解釋一下:我該如何做ajax然後提交? – 2011-03-21 20:28:40

+0

@James Thompson,AJAX的重點在於它是異步的。如果您有一種情況需要等待AJAX​​調用完成才能提交表單,那麼最好將表單正常提交,並且在腳本中執行您打算在AJAX調用期間執行的任何操作張貼表單。 – 2011-03-21 20:31:21

+0

發佈到的表單不是我的。 – 2011-03-21 21:27:14

0

那麼,當您提交表單時,如果您在.submit()方法中返回true,它將使瀏覽器實際提交數據,而不僅僅是執行AJAX調用。由於您使用的是AJAX,因此您應該阻止提交表單,因爲您希望返回AJAX呼叫。

+0

那麼我應該如何在ajax之後提交呢?或者我必須將提交作爲其一部分來處理? – 2011-03-21 20:29:26