2009-11-02 100 views
3

我有一個問題,有時下面的AJAX代碼中的數據有效載荷不會發送到服務器。在jQuery AJAX文章中,是否有可能不發送數據有效載荷?

// loans_url, sample_id, sample defined above this block 
$.ajax({ 
    type:  "POST", 
    url:  loans_url, 
    data:  {'loan[sample_id]':sample_id}, 
    beforeSend: function()  { sample.remove(); }, 
    success: function(data) { $('#basket table tr:last').after(data); }, 
    error:  function()  { $('#results').prepend("Apologetic error message..."); } 
}); 

「good」post發送的數據如下所示:loan[sample_id]: 1234。一個「不好」的帖子點擊了正確的URL,但根本沒有發送任何數據。

我不能在發展中重現此但它發生在一個每天約一次生產。在Firebug中,我嘗試在從中獲取sample_id的頁面中破壞標記,但這只是導致loan[sample_id]: undefined被髮送,這不是我正面臨的問題。

有什麼辦法將數據有效載荷可以在全部不發送?你能建議我如何進一步調試嗎? (這是所有與jQuery 1.3.2。)如果有一個連接問題

+0

你是不是傳遞'dataType'選項'阿賈克斯()',是正確的? – 2009-11-02 13:51:56

+0

你知道這是什麼瀏覽器嗎? – 2009-11-02 13:52:59

+0

'dataType'涉及服務器發送回客戶端的內容,而不是客戶端發送給服務器的內容。我基於jQuery站點上的'.ajax()'示例編寫了這段代碼,所以我很確定'dataType'是不必要的(在這種情況下)。 – 2009-11-02 16:42:08

回答

0

POST數據只會丟失 - 例如,你可以向外拉你的網線,就像你按下「提交」複製此 - 標題可能會使它,發佈數據可能不會 - 標題始終首先發送。

所以,我覺得你在看基礎設施。丟失的互聯網連接,一些丟失的數據包或類似的東西。我認爲這對開發人員來說不是問題 - 只要您只接受完全形成的帖子請求即可。

+0

這當然有可能。但是,網站上還有許多其他AJAX調用,這是唯一一個有問題的調用。只有這個特定的電話受到影響的可能性似乎很小......所以我懷疑還有其他一些問題。 – 2009-11-02 12:32:50

1

嘗試爲您的jQuery ajax調用定義一個error處理程序,並在某處記錄錯誤數據(呃,可能會對錯誤記錄器進行另一個Ajax調用?)如果是連接問題,遠程登錄任何東西都會更困難。根據您的應用程序,您可能需要在本地記錄某些內容(可能爲cookies),以便進行後期分析(一旦連接啓動,假設它存在連接問題)。

+0

我會試試這個。使用錯誤事件記錄任何異常。或者,只是將它用作中斷點。 – Mike 2009-11-02 15:34:06

+0

您的意思是預先提交錯誤處理程序來捕捉Javascript將AJAX文章放在一起的任何問題嗎?不知道我會如何實現這一點。 我在服務器上有一個錯誤處理程序(這是我知道這是什麼時候發生的)。郵寄請求總是很好地形成併成功提交;它有時候缺少貸款[sample_id]:1234'有效載荷。 – 2009-11-02 16:48:02

+0

jQuery允許對錯誤的ajax調用和'beforeSend'回調的'error'回調修改XMLHttpRequest。查看 jQuery [AJAX] [1]文檔。 [1]:http://docs.jquery.com/Ajax/jQuery.ajax – 2009-11-02 18:50:20

相關問題