.each循环只返回最后的结果

时间:2016-01-30 13:44:55

标签: javascript each

我的.each字母表只返回“s”中的最后一个结果:

function foo() {
  alert("it works!");
}

setTimeout(foo, 1000);

相关的javascript代码:

$('#keywordTable tr:last').after('<tr><td>' + s + '</td><td>' + val[0] + '</td><td>0</td><td>0</td><td>0</td></tr>');

以下是实时预览:http://keyworda.com

问题:(以红色圈出):http://i.imgur.com/gR46SuE.png

1 个答案:

答案 0 :(得分:0)

您遇到多个同时发生的JSONP请求时遇到问题。每个回调函数名称必须不同,否则它们会相互覆盖,您只能看到最后一个请求的结果。您可以详细了解herehere

要修复$.getJSON调用,您应删除jsonp: 'suggestCallback'位,并将回调函数作为第二个参数。回调名称由jQuery自动填充,因为您将callback=?放在URL中。

$.getJSON("http://suggestqueries.google.com/complete/search?callback=?", {
    "hl": language, // Language
    "q": s, // query term
    "client": "youtube" // force youtube style response, i.e. jsonp
}, function(data){
    var suggestions = [];
    var languageText = $("#edit-domain option:selected").text();
    $('#keywordTable').show();
    $.each(data[1], function(key, val) {
        suggestions.push({
            "value": val[0],
        });
        $('#keywordTable tr:last').after('<tr><td>' + s + '</td><td>' + val[0] + '</td><td>0</td><td>0</td><td>0</td></tr>');
    });
});

以下是一些有效的代码:http://plnkr.co/edit/O2JKhhOziRczIMkctQc7?p=preview