繁体   English   中英

如何解决JavaScript中的嵌套DB调用错误?

[英]How do I fix a nested DB call error in javascript?

我有一个JavaScript循环,该循环遍历具有“数量字段”类的元素,并且正在该循环中对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数据库,如果有帮助。

从您的示例中,我只能得出结论,该数据库是您要向其发送请求的基于Web的API。

setTimeout()不会对POST请求的执行产生任何影响,它只会将执行延迟至少1000毫秒。

在您的情况下,您只是向数据库发送客户端请求,就无法控制数据库内部发生的错误。 您唯一的选择是在JavaScript应用程序中适当处理此错误。

在jQuery.post()文档页面中,

从jQuery 1.5开始,所有jQuery的Ajax方法都返回XMLHTTPRequest对象的超集。 $ .get()返回的此jQuery XHR对象或“ jqXHR”实现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");
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM