从javascript中的嵌套函数返回
我正在尝试创建一个函数,它使用jquery的ajaxfunction从我的ajax.php文件中获取一些信息 代码: 问题是我不能让success函数返回到ajaxIt函数。有人能告诉我怎么做那样的事吗从javascript中的嵌套函数返回,javascript,jquery,function,return,nested-function,Javascript,Jquery,Function,Return,Nested Function,我正在尝试创建一个函数,它使用jquery的ajaxfunction从我的ajax.php文件中获取一些信息 代码: 问题是我不能让success函数返回到ajaxIt函数。有人能告诉我怎么做那样的事吗 谢谢。您需要调用回调函数来以这种方式处理数据: function ajaxIt(dataLine, cb){ $.ajax({ type: "POST", url: "ajax.php", data: "ajax=true&"+da
谢谢。您需要调用
回调函数来以这种方式处理数据:
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();
}
});
$。ajax
是异步的。这意味着它将立即返回,而不是等待AJAX查询执行并从服务器检索结果。当来自服务器的消息到达时,您的ajaxIt
功能已经完成工作
你应该在这里使用一种延续传球方式。为ajaxIt
提供一个continuation:一个函数,解释在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();
}
});
这很有效,谢谢。它的代码比我希望的要多一些(几乎相当于每次只编写ajax函数),但它必须这样做。谢谢您的快速响应。@Thomas,实际上,它只需要很少的代码?只有几个字符。如果不检查函数,它就像一个微小的差异。继续?回调是一个更为标准的名称。我们挂断电话,等我有空再打给你。
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();
}
});