从$ .post回调中返回函数值

时间:2011-12-07 11:11:24

标签: jquery

JS:

 function verificaExistPed(numped){
        var valida;
        jQuery.post("procedures/class_oc.php", // ajax post
            {
                cache      : false,
                checkYear  : true,
                numped     : numped
            },
            function(data)
            {
                if(data === "s"){
                    valida = true;
                }else{
                    valida = false;
                }
            }
        )
        return valida;
  }

并且,在另一个地方调用该函数,应该在变量valida内返回check结果,在我的情况下,truefalse

var check = verificaExistPed('".$numped."');
alert(check); // always undifined

但是,总是未定义。

如何从valida回调中将true设置为false$.post

2 个答案:

答案 0 :(得分:2)

这是因为在调用函数后异步调用处理程序。所以你同步请求它,如:

function test() {
    var html = $.ajax({
    url: "procedures/class_oc.php",
       async: false // <-- heres the key !
    }).responseText;

    return html;
}

答案 1 :(得分:1)

您无法返回,因为jQuery.post是异步调用。您必须依赖回调函数才能从服务器获取响应。试试这个:

 function verificaExistPed(numped, isValidCallback){
        jQuery.post("procedures/class_oc.php", // ajax post
            {
                cache      : false,
                checkYear  : true,
                numped     : numped
            },
            function(data)
            {
                isValidCallback(data === "s");
            }
        )
  }

<强> USAGE:

verificaExistPed('".$numped."', function(isValid) {
   alert(isValid); //returns true or false
});