首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从javascript中的嵌套函数返回

从javascript中的嵌套函数返回
EN

Stack Overflow用户
提问于 2010-08-18 22:56:26
回答 2查看 2.6K关注 0票数 4

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

代码:

代码语言:javascript
运行
复制
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函数。有没有人能解释一下我怎么能做这样的事情?

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-08-18 23:00:09

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

代码语言:javascript
运行
复制
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();
      }
});
票数 9
EN

Stack Overflow用户

发布于 2010-08-18 23:02:15

$.ajax是异步的。这意味着它将立即返回,而不是等待AJAX查询执行并从服务器检索结果。当来自服务器的消息到达时,您的ajaxIt函数已经完成了工作。

您在这里应该使用的是延续传递样式。为ajaxIt提供一个延续:这个函数解释了在ajaxIt完成工作后应该做些什么。

代码语言:javascript
运行
复制
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();
  }
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3513423

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档