为了账号安全,请及时绑定邮箱和手机立即绑定

多次调用 ajax 导致重复响应

多次调用 ajax 导致重复响应

PHP
白猪掌柜的 2022-10-14 10:04:12
我创建了一个 ajax 函数,它通过从我的数据库中获取来返回我的项目价格。我确定我的 php 没有任何问题,但有时我两次得到相同的结果!jQuery$('.removemore___').click(function(e) {  var item_id = $(this).attr('data-item');  var col_id = $(this).attr('data-col');  var value = $(this).attr('data-value');  if ($(this).attr('data-trash') == 'trash') {    newPopuper('alert_sure__', 'flex', 'blackScreen');    $('.__aggtoyes').attr('data-item', item_id);    $('.__aggtoyes').attr('data-col', col_id);    $('.__aggtoyes').attr('data-value', value);  } else {    $.ajax({      type: "POST",      url: "includes/chekavailableitem.php?remove",      data: {        item_id: item_id,        col_id: col_id,        value: value      },      dataType: "text",      success: function(response) {        var iNum = parseInt(value);        iNum--;        if (response == 'done') {          $('.value__cart[data-item=' + item_id + '][data-col=' + col_id + ']').html(iNum);          $('.removemore___[data-item=' + item_id + '][data-col=' + col_id + ']').attr('data-value', iNum);          $('.addmore___[data-item=' + item_id + '][data-col=' + col_id + ']').attr('data-value', iNum);          if (iNum == 1) {            location.reload();          }        } else if (response == 'deleted') {          location.reload();        }      },      error: function() {        $('#wrong-signup').html(': 102');      },      timeout: 5000    });  }  $.ajax({    type: "POST",    url: "includes/get_finalize_cart.php",    data: {},    cache: false,    async: true,    dataType: "json",    success: function(response) {      // var final_price = $.parseJSON(response)      console.log(response);      if (response[0] == 'done') {        $('.final_price__').html(response[1] + ' <span style="font-size: .786rem;font-weight: 400">تومان</span>');      } else {      }    },    error: function() {      $('#wrong-signup').html(': 101');    },    timeout: 5000  });  e.stopImmediatePropagation();  return false;});我还将显示控制台页面的屏幕截图,以便您查看我的结果:
查看完整描述

1 回答

?
梦里花落0921

TA贡献1772条经验 获得超6个赞

在调用之前,您无需等待chekavailableitem.php?remove完成get_finalize_cart.php。由于 AJAX 是异步的,后者可能会先处理,因此您将获得旧值的副本。

您应该将第二次$.ajax()调用放在sucess:第一次调用的函数中$.ajax(),或者使用承诺。


查看完整回答
反对 回复 2022-10-14
  • 1 回答
  • 0 关注
  • 68 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信