2011-09-11 60 views
1

我用Firebug來調試我的代碼。在「Net」面板中,我根本沒有看到.ajax()發射。 (沒有看到任何傳出的請求url)jQuery.ajax()not firing

我的代碼有什麼問題?

編輯:後我添加$(document).ready()。到我的代碼,一切正常工作。爲什麼我需要$(document).ready()? 我認爲點擊按鈕時,文檔已準備就緒。 需要添加「返回false」;以及

function doSubmit() { 
     alert('button is clicked.'); 

     $.ajax({ 
      type: 'Post', 
      url: "http://mysite.com/list/json", 
      dataType: "json", 
      context: [], 
      success: function(data){ 
       alert('got data'); 
      } 
     }); 
}  
<form name="my_form" id="myform"> 
    <div class="mydiv"> 
     <input class="button" type="submit" value="Save" onClick="doSubmit();"> 
    </div> 
</form> 
+0

您的意思是檢查控制檯呢? –

+0

就像一個說明,你正在使用上下文錯誤。上下文是「這個」應該在你的處理程序中。嘗試使用數據。 – tjameson

+0

你需要document.ready,因爲jquery庫可能尚未加載。將所有內容放入.ready函數也是一個好主意,因爲在腳本運行時DOM可能不會被填充,並且如果啓動時運行選擇器,則可能會遺漏元素。 –

回答

4

你必須返回false,否則它只是提出,形式

function doSubmit() { 
     alert('button is clicked.'); 

     $.ajax({ 
      type: 'Post', 
      url: "http://mysite.com/list/json", 
      dataType: "json", 
      context: [], 
      success: function(data){ 
       alert('got data'); 
      } 
     }); 
     return false; 
}  
+0

我必須要做退貨嗎?因爲我希望做條件檢查,如果ajax返回的數據是好的,那麼提交表單,否則做「返回false」 –

+0

@Shadow_boi:你可以添加$(「form」)。在成功響應,但你必須包括你的ajax命令後返回false – genesis

+0

明白了。謝謝 –

1
$('#myform').submit(function() { 
    $.ajax({ 
     // ... 
    }); 
});