一尘不染

没有警报框,AJAX无法正常工作

ajax

我正在尝试使用以下代码:

$('#form1').on('submit', function(){
    var txtItemCode = $('#txtItemCode').val();
    $.post("userExist.php", {
        txtItemCode: txtItemCode,
    }, function(data,status){
        //alert("Data: " + data + "\nStatus: " + status);
        $('#status').html(data);    
        reply = data;
        //alert(reply);
    });
    alert('');
    if (reply=='OK'){
        return false;
    }
});

我需要检查是否data=="OK"返回false,但是当删除时alert,它不再起作用。为什么会这样,我如何使它起作用?


阅读 150

收藏
2020-07-26

共1个答案

一尘不染

当您引入警报时它起作用的原因是,它停止了执行并为异步调用提供了足够的时间来完成。

您没有获得正确的值,因为在发布请求完成且回调已执行时,您的JavaScript已经完成执行。

您在这里有一些选择:

  1. 声明全局变量并执行同步调用,您可以使用发布的代码ABC进行此操作,也可以$.ajaxSetup({ async: false })在POST调用之前进行调用。将返回值分配给全局变量并对此进行验证。
  2. 使用jQuery的ajaxStop: $(document).ajaxStop(function() { //check your values here, still need to declare a global });
  3. 将值写入DOM中任何位置的隐藏div /作为属性,并使用计时器定期检查它,直到有值为止。
2020-07-26