2015-09-02 64 views
2

我正在使用Ajax和jQuery進行表單數據提交。 當我在彈出窗口上提交表單時,我刷新了父頁面。 我的代碼:表單使用jQuery提交Ajax有時不起作用

$(document).ready(function() { 
    $("#frm_addSpeedData").submit(function(event) { 
    //event.preventDefault(); 
    $.ajax({ 
     type: "POST", 
      url: "/webapp/addSpeedDataAction.do", 
      data: $(this).serialize(), 
      success: function(data) { 
      //console.log("Data: " + data); 
      window.opener.location.reload(); 
      } 
     }); 
    }); 
}); 

但是頁面被刷新回調的成功,但我看不到我的父頁面上更新。有時我可以看到更新,有時甚至沒有。什麼是問題?我也需要知道如何在原生javascript中編寫它,並使用ajax javascript提交表單。

+0

你使用Firebug調試Ajax的方法調用返回200 OK? – Lucky

+0

是的。返回200確定我可以看到 –

回答

0

也許你得到這個錯誤是因爲javascript是異步的,並且即使你還沒有請求的響應,你的代碼也會繼續。

試試這個:

$(document).ready(function() { 
     $("#frm_addSpeedData").submit(function(event) { 
     //event.preventDefault(); 
     $.ajax({ 
      type: "POST", 
       url: "/webfdms/addSpeedDataAction.do", 
       data: $(this).serialize(), 
       async: false, // This will only proceed after getting the response from the ajax request. 
       success: function(data) { 
       //console.log("Data: " + data); 
       window.opener.location.reload(); 
       } 
      }); 
     }); 
    }); 
+0

好。讓我試試 –

+0

但我可以看到頁面刷新。這意味着Ajax電話已經成功。是不是? –

+0

問題是:想象一下,如果字段「X」是數據庫中的唯一值,那麼您有驗證。當你運行AJAX來驗證它時,你必須從數據庫中獲取數據,然後驗證它是否唯一。如果請求時間過長,則可能會進行提交而不驗證該字段。如果我不清楚,請告訴我。在這個例子中,我無法複製錯誤,所以對我來說更難。 –