jQuery AJAX函数返回true或false只返回false而它的一切都很好

时间:2013-11-29 09:38:13

标签: jquery ajax

jQuery函数返回true或false,只返回false而其全部

我不知道如何解决它和错误。

到目前为止,我得到了这个代码:

onclick功能:

$(document).on('click', '.founditems', function (e) {
    var $this = $(this)
    var k = $this.attr('href');
    if (checkUserSystem(k) == true) {
        alert("good");

    } else {
        alert("bad");
    }
});

ajax功能:

function checkUserSystem(k) {
    var starttime = $.trim($('#checkusersystemstartime').val());
    var k = k;
    var dataString = 'k=' + k + '&starttime=' + starttime;
    $.ajax({
        type: "POST",
        url: "r.php?proc=sendCp",
        data: dataString,
        dataType: 'json',
        beforeSend: function () {

        },
        complete: function () {

        },
        success: function (data) {

            if (data.message == false) {

                return false;
            } else if (data.cblocked == true) {

                return false;
            } else {

                return true;
            }
        }
    });
    return false;
}

当函数完美运行并且php返回true时,该函数总是返回false, 如果我删除return false;在ajax代码的最后,它将返回undfiend而不是true任何想法?

感谢。

3 个答案:

答案 0 :(得分:4)

您必须阅读异步执行。当ajax调用完成时运行成功块,但在$ .ajax()调用之后,代码的执行将立即继续。

未定义错误的原因是该方法不会返回任何内容,除非您使用“return false”调用。

您可以将警告true / false部分作为函数参数,或者您必须查看  在ajax调用的同步版本。

答案 1 :(得分:1)

您也可以像这样使用成功部分

function (data) {
    if (data.message) {
        return true;
    } else if (data.cblocked) {
        return false;
    } else {
        return false;
    }
}

答案 2 :(得分:1)

您不能使用“if(checkUserSystem(k)== true)”,因为您的ajax请求是异步请求。 它的意思是 在ajax请求完成之前,checkUserSystem函数将始终返回“false”。

我认为如果你在ajax请求完成后必须做某事,你应该在ajax.success函数中执行:

$(document).on('click','.founditems',function(e){

                       var $this=$(this)

                       var k = $this.attr('href');

                       checkUserSystem(k);

 });

function checkUserSystem(k){

    var starttime = $.trim($('#checkusersystemstartime').val());

    var k = k;

    var dataString = 'k='+ k + '&starttime=' + starttime;

    $.ajax({
    type: "POST",
    url: "r.php?proc=sendCp",
    data: dataString, 
    dataType:'json',
    beforeSend: function(){

      },    
    complete:function(){

      },
    success: 
           function(data){

            if(data.message == false){

                  alert("good");

             }else if(data.cblocked == true){

                   alert("good");

                 }else{

                   alert("good");
             }


    }



    });
return false;
}