2017-03-04 126 views
0

我有一個JavaScript循環,循環遍歷類「Amount Field」的元素,並且我正在對該循環內的一個servlet進行post調用。如何解決JavaScript中的嵌套數據庫調用錯誤?

偶爾,我得到一個嵌套數據庫錯誤。我試圖添加一個超時,但我仍然有時會得到錯誤。

的代碼如下:

$('.AmountField').each(function(i, obj) { 
    var donationId = ($(obj).attr('id')).substring(14); 
    console.log(donationId); 
    var data = { 
     userId: userId, 
     date: $("#donationDate").val(), 
     amount: +$(obj).val(), 
     method: $("#paymentMethod").val(), 
     bank: $("#Account").val(), 
     referredBy: $("#referredBy").val(), 
     donationId: donationId, 
     //description: $("#Description").val(), 
    }; 
    setTimeout(function(){ 
     $.post("ActionReceivePaymentsServlet", $.param(data), function(response) { 
      alert("Donation Entered Successfully"); 
     }); 
    }, 1000); 
}); 

有沒有辦法,我可以解決這個問題什麼辦法?如果有幫助,我正在使用一個sqlite數據庫。

回答

0

從你的例子我只能得出結論,數據庫是一個基於web的API,你發送你的請求。

setTimeout()對POST請求的執行沒有任何影響,它只會延遲執行至少1000毫秒。

在你的情況下,你只是發送一個客戶端請求到數據庫,你不能控制數據庫內發生的錯誤。你唯一的選擇是在JavaScript應用程序中適當地處理這個錯誤。

從jQuery.post()文檔頁面,

在jQuery 1.5中,所有的jQuery的Ajax方法返回XMLHttpRequest對象的一個​​超集。這個jQuery XHR對象(或稱爲「jqXHR」)返回$ .get()實現Promise接口,爲Promise提供所有屬性,方法和行爲(請參閱Deferred對象以獲取更多信息)。所述jqXHR.done()(成功),jqXHR.fail()(錯誤),和jqXHR.always()(完成,是否成功或錯誤; jQuery中加入1.6)方法,採取函數參數,當請求終止時被調用。

因此您的代碼將看起來像

$.post("ActionReceivePaymentsServlet", $.param(data), function(response) { 
    alert("Donation Entered Successfully"); 
}).fail(function (error) { 
    alert("Donation Failed"); 
}); 
相關問題