【问题标题】:How to display array content at the end of getjson call?如何在 getjson 调用结束时显示数组内容?
【发布时间】:2015-12-29 14:17:55
【问题描述】:

我有一个函数可以进行 2 次 getjson 调用并将响应写入数组。我在第二次 getjson 调用结束时使用了以下代码:

alert(files.length);
print_r(files);
console.log(files);

但是,files.length 告诉我数组中的项目数,但 print_r(files);和 console.log 不工作?我想打印数组项目以确认我得到了正确的项目,但数组打印不起作用!谁能告诉我如何解决这个问题?(我的目标是稍后对该数组进行排序并删除重复项和过滤器...)

    <script>
    var files = new Array();

       function pushtoArray(){

    //first getjson call
    var url1 = "https://spreadsheets.google.com/feeds/list/xxxxx/xxxxx/public/values?alt=json"; 
        $.getJSON(url1, function(data) {

          var entry = data.feed.entry;

          $(entry).each(function(){
            // Column names are name, age, etc.
        count++;
         files.push({ url: this.gsx$url.$t, filename: this.gsx$name.$t });

            $('.results').prepend('<h2>'+this.gsx$name.$t+'</h2><p>'+this.gsx$url.$t+'</p>');

          });

        alert(files.length);
        print_r(files);
        console.log(files);
        });//end of ajax call

    //second getjson call
var url2 = "https://spreadsheets.google.com/feeds/list/xxxxx/xxxxx/public/values?alt=json"; 
        $.getJSON(url2, function(data) {

          var entry = data.feed.entry;

          $(entry).each(function(){
            // Column names are name, age, etc.
        count++;
         files.push({ url: this.gsx$url.$t, filename: this.gsx$name.$t });

            $('.results').prepend('<h2>'+this.gsx$name.$t+'</h2><p>'+this.gsx$url.$t+'</p>');

          });

        alert(files.length);
        print_r(files);
        console.log(files);
        });//end of ajax call


        };//end of function

    </javascript>

html代码:

<body onload="pushtoArray()">

【问题讨论】:

    标签: javascript arrays ajax getjson


    【解决方案1】:

    Print_r 是 PHP 函数,在 javascript 中只能使用 console.log。

    【讨论】:

    • 感谢您的回复。我如何在 ajax 之外使用数组?例如在另一个函数中?
    • 为此,我猜你应该把它放在一个非局部变量中。 (局部变量具有前缀“var”)。您应该记住,Ajax 调用是异步的,因此 getJSON 和 ajax 调用结束之间的代码比脚本中的其他代码执行得稍晚(因为它只是在启动 Ajax 时继续执行-打电话)。
    • 如何在将数组发送到另一个函数之前等待所有多个 getjson 调用完成?
    • 这里可能有点跑题了。也许您应该发布一个新问题或自己搜索解决方案。但是......我会帮助你一点:你可以创建一个数组(所以不是本地数组)并将你的 JSON 结果放入其中。当您执行了 5 个请求并且 JSON 数组包含 5 个项目时,您就知道所有请求都已完成,您可以将数组扔给一个函数。明白了吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多