如何在javascript中修复嵌套的数据库调用错误?

时间:2017-03-04 00:26:45

标签: javascript sqlite post

我有一个JavaScript循环,循环使用类" Amount Field,"我正在调用该循环中的servlet。

偶尔会出现嵌套数据库错误。我尝试添加超时,但有时我仍然会收到错误。

代码如下:

$('.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数据库。

1 个答案:

答案 0 :(得分:0)

在您的示例中,我只能得出结论,数据库是基于网络的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");
});