回调函数的$ .getJSON示例

时间:2017-05-17 09:29:40

标签: javascript json callback

我想从$ .getJSON调用中访问数据,并将其作为数组返回。我的数据正确传输到我的回调函数,但在调用我的函数时仍未定义。我在哪里弄错了?任何人都可以使用$ .getJSON向我展示一个例子吗?

我的代码:

function countTypes( resource ) {
    $.getJSON( resource, otherFunction ); 
}

function otherFunction( data ) {
    var types = [];
    $.each(data, function( i, item ) {
        types.push( item['id'] );
    });
    console.log( types ); // This one works :)
    return types;
}

types = countTypes( 'my_resource' );  // types is undefined :(

1 个答案:

答案 0 :(得分:-2)

  1. countTypes不会返回任何内容
  2. 在类型获取值之前会有一段时间,而您无法控制它。因此,您无法检查是否已为其分配值。
  3. 您定义变量"类型"两次。在otherFunction里面你定义它并使用' var'所以它不会覆盖外部类型'。但它仍然是不好的做法(在小代码片段中)。尝试使用更好的命名。
  4. 编辑: 2是错的。对于那个很抱歉。你想要做的是创建一个处理类型的函数,就像你最初想要的那样(并不在你的问题中)。

    var doSomethingWithTypes = function(types){
      $.each(types, function(index, type){
            console.log(type);
      });
    

    };

    现在,在otherFunc中,一旦获得类型 - 调用doSomethingWithTypes(types):

    function otherFunction( data ) {
        var types = [];
        $.each(data, function( i, item ) {
            types.push( item['id'] );
        });
        doSomethingWithTypes(types);
    }