使用jQuery AJAX没有回调,则返回true(use jquery ajax don'

2019-11-01 16:41发布

我尝试使用查询AJAX,当我有“返回false”我得到的回调以及

$(document).ready(function(){

    $("form#Form").submit(function(){
        $.ajax({
            url: "ajax.php",
            type: "POST", 
            data: $(this).serialize(), 
            success: function(callback){ 
                alert(callback);            
            } //success
        }); //ajax

        return false;

    }); //submit
}); //ready

在PHP文件我只是回应“丹尼斯”,它的工作原理和我的内容“丹尼斯”警报。 当我尝试这样的事:

$(document).ready(function(){

    $("form#Form").submit(function(){
        $.ajax({
            url: "ajax.php",
            type: "POST", 
            data: $(this).serialize(), 
            success: function(callback){ 
                alert(callback);            
            } //success
        }); //ajax

    if (callback == "dennis"){
        return false;
    }else{
        return true;
    }   

    }); //submit
}); //ready

我得到空警戒和形式的行为像他得到“返回true”。 我也尝试把变量和回报他,但还是同样的问题..

为什么会发生? 如何解决?

Answer 1:

这是因为Ajax的范围将执行异步的,因此,当您检查if (callback == "dennis")你的AJAX调用甚至可能不会达到你的php呢,因此回调将是不确定的

你需要检查callback (它实际上是一个糟糕的变量名,因为它不是一个回调,但是从你的AJAX调用的结果 )中签范围。

$.ajax({
    url: "ajax.php",
    type: "POST", 
    data: $(this).serialize(), 
    success: function(callback){ 
       alert(callback);
       if (callback == 'dennis') {
           return true;
       } else return false;
    } //success
}); //ajax

现在,你的下一个问题是,你的形式可能已经返回true,所以最好打电话与您的结果产生一个新的功能,比返回true | false这里。

 // ajax metod success function
    success: function(result){ 
       alert(callback);
       onFormReturn(result);
    } //success

并确定处理结果的功能

// elsewhere, outside ajax-scope - even outside document.ready
function onFormReturn(result) {
   if (result == "dennis") {
      // do your stuff
   } else {
      // do something else
   }
}


Answer 2:

看到我对你的问题的第一个评论,这就是为什么它不工作。

可以做这样的事情,但我建议这样

var foo = null;

$.ajax({
    url: '/',
    method: 'POST',
    async: false,
    success: function(result) {
        foo = result;
    }
});

// use foo


文章来源: use jquery ajax don't have callback when return true