我正在尝试使用jquery的ajax函数来从我的ajax.php文件中获取一些信息。
代码:
function ajaxIt(dataLine){
$.ajax({
type: "POST",
url: "ajax.php",
data: "ajax=true&"+dataLine,
success: function(msg){
console.log("[AjaxIt]: "+dataLine+" returned "+msg);
return msg;
}
});
}
if(ajaxIt("action=loggedIn")=="1"){
console.log("Logged In");
loggedIn=true;
initiate2();
}
问题是我无法将成功函数一直返回到ajaxIt函数。任何人都可以说明我可以做些什么吗?
感谢。
答案 0 :(得分:9)
您需要调用callback
函数来处理数据:
function ajaxIt(dataLine, cb){
$.ajax({
type: "POST",
url: "ajax.php",
data: "ajax=true&"+dataLine,
success: function(msg){
if($.isFunction(cb))
cb.apply(null, [msg]);
}
});
}
ajaxIt("action=loggedIn", function(data){
if(data === "1"){
console.log("Logged In");
loggedIn=true;
initiate2();
}
});
答案 1 :(得分:1)
$.ajax
是异步的。这意味着它将立即返回,而不是等待AJAX查询执行并从服务器检索结果。当来自服务器的消息到达时,您的ajaxIt
功能已经完成。
这里你应该使用的是一种延续传递方式。为ajaxIt
提供延续:一个函数,解释ajaxIt
完成工作后应该执行的操作。
function ajaxIt(data, continuation) {
data.ajax = true;
$.post("ajax;php", data, function(msg) {
console.log("[AjaxIt]: returned "+msg);
continuation(msg);
});
}
ajaxIt({action:"logged-in"}, function(result) {
if (result == "1") {
console.log("Logged In");
loggedIn=true;
initiate2();
}
});