Function JavaScript函数返回一些值

Function JavaScript函数返回一些值,function,javascript,Function,Javascript,我已经定义了一个JavaScript函数 function a() { var data = 'some data'; $.getJSON(networkController,data,function(r) { $.each(r, function(a) { alert(r[a].networkAccessToken); }); }); } 它工作得很好,但当我这样做时:

我已经定义了一个JavaScript函数

function a()

 {
    var data = 'some data';
    $.getJSON(networkController,data,function(r) {
            $.each(r, function(a)
            {
                alert(r[a].networkAccessToken);
        });
   });
}
它工作得很好,但当我这样做时:

 function a()

 {
    var data = 'some data';
    $.getJSON(networkController,data,function(r) {
            $.each(r, function(a)
            {
                return r[a].networkAccessToken;
        });
  });
 }
var c = a();
alert(c);

警报未定义

认识到AJAX调用是非阻塞的,这一点很重要。这意味着它在从服务器收到响应之前返回。(第一个“A”代表“异步”!)

处理此问题的最常用方法是使用:


认识到AJAX调用是非阻塞的,这一点很重要。这意味着它在从服务器收到响应之前返回。(第一个“A”代表“异步”!)

处理此问题的最常用方法是使用:

你有两个问题

首先,异步JavaScript和XML是异步的。调用
$.getJSON
时,它会发送一个HTTP请求,并注册一个函数,以便在数据返回时运行。然后,它在等待的同时运行现有函数,得到一个

实际上,您正在尝试执行以下操作:

function a() {
    $('button').click(function () { return 1; });
}
foo = a(); // Would you expect this to be `1` and not `undefined`?
其次,
每个
为每个值调用一个函数。传递给
each
的函数由
each
调用,而不是
getJSON
a
。其返回值仅确定循环是否应继续

在传递给每个
的函数中,您需要执行您想执行的任何操作。您无法将数据传递回调用链。您想要传递回的内容不再存在。

您有两个问题

首先,异步JavaScript和XML是异步的。调用
$.getJSON
时,它会发送一个HTTP请求,并注册一个函数,以便在数据返回时运行。然后,它在等待的同时运行现有函数,得到一个

实际上,您正在尝试执行以下操作:

function a() {
    $('button').click(function () { return 1; });
}
foo = a(); // Would you expect this to be `1` and not `undefined`?
其次,
每个
为每个值调用一个函数。传递给
each
的函数由
each
调用,而不是
getJSON
a
。其返回值仅确定循环是否应继续


在传递给每个
的函数中,您需要执行您想执行的任何操作。您无法将数据传递回调用链。您要传回的内容已不存在。

再次检查…..语法正确,请给出总代码您如何从数据库中获取值?你确定值解析正确吗?我们能看到为b设置值的代码吗?或者是什么。如果函数a()是ajax调用的回调函数,那么如果你直接调用它,它将不会有值b,除非由ajax引擎异步调用。@Ranamumhammadusman,请将上面的代码添加到问题中。再次检查…..这是正确的语法,从其他方面给出总代码您如何从数据库中获取值?你确定值被正确解析了吗?我们能看到为b设置值的代码吗?或者是什么。如果函数a()是ajax调用的回调函数,那么如果你直接调用它,它将不会有值b,除非由ajax引擎异步调用。@Ranamumhammadusman,请将上面的代码添加到问题中。这样不好吗
return$(r,function(){return r[a].networkAccessToken;});
这不正常吗
return$.each(r,function(){return r[a].networkAccessToken;});