我正在尝试创建一个函数,它使用jquery的ajaxfunction从我的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函数。有没有人能解释一下我怎么能做这样的事情?
谢谢。
发布于 2010-08-18 23:00:09
您需要调用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();
}
});
发布于 2010-08-18 23:02:15
$.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();
}
});
https://stackoverflow.com/questions/3513423
复制相似问题