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
结果,在我的情况下,true
或false
。
var check = verificaExistPed('".$numped."');
alert(check); // always undifined
但是,总是未定义。
如何从valida
回调中将true
设置为false
或$.post
?
答案 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
});