从javascript中的嵌套函数返回

从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

我正在尝试创建一个函数,它使用jquery的ajaxfunction从我的ajax.php文件中获取一些信息

代码:

问题是我不能让success函数返回到ajaxIt函数。有人能告诉我怎么做那样的事吗


谢谢。

您需要调用
回调函数来以这种方式处理数据:

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();
  }
});