Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何修复javascript中的嵌套DB调用错误?_Javascript_Sqlite_Post - Fatal编程技术网

如何修复javascript中的嵌套DB调用错误?

如何修复javascript中的嵌套DB调用错误?,javascript,sqlite,post,Javascript,Sqlite,Post,我有一个JavaScript循环,它通过类“Amount Field”遍历元素,并对该循环中的servlet进行post调用 偶尔,我会得到一个嵌套的DB错误。我尝试添加超时,但有时仍会出错 代码如下: $('.AmountField').each(function(i, obj) { var donationId = ($(obj).attr('id')).substring(14); console.log(donationId); var data = {

我有一个JavaScript循环,它通过类“Amount Field”遍历元素,并对该循环中的servlet进行post调用

偶尔,我会得到一个嵌套的DB错误。我尝试添加超时,但有时仍会出错

代码如下:

$('.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()文档页面

从jQuery1.5开始,jQuery的所有Ajax方法都返回XMLHTTPRequest对象的超集。此jQuery XHR对象,或“jqXHR”,由$返回。get()实现Promise接口,为其提供Promise的所有属性、方法和行为(有关详细信息,请参阅延迟对象)。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");
});