结合JS代码,不确定我得到了所需的变量

时间:2014-06-15 00:51:30

标签: javascript jquery

谁能告诉我自己做错了什么?我终于明白了如何遍历JSON结果并在DIV中显示,但现在我尝试将其添加到自动填充搜索建议的jquery代码中。

http://jsfiddle.net/9fztL/3/

$(document).ready(function () {
    var tagsArray = []

    $.getJSON("https://api.deckbrew.com/mtg/cards?color=red&color=blue&rarity=rare&name=fire", function (result) {
        $.each(result, function (i, field) {
            //$("div").append(field.name + "<br>" + field.url + "<br> " + field.id + "<br> " + field.set_url + "<br>");
            tagsArray.push(field.name);
        });

        $(function () {
            var availableTags = tagsArray;
            $("#tags").autocomplete({
                source: availableTags
            });
        });
    });
});

$(function () {
    var availableTags = tagsArray;
    $("#tags").autocomplete({
        source: availableTags
    });
});

2 个答案:

答案 0 :(得分:1)

您的$(function() {});创建了closure,使其超出tagsArray变量的范围。你最好的选择就是在你的上一部分中删除它:

$.getJSON("", function (result) {
    $.each(result, function () {}); // Same as you have it

    $('#tags').autocomplete({
        source: tagsArray
    });
});

你不需要你的下半部分。

答案 1 :(得分:0)

经验法则:保持简单,不要使用$(function(){});或者其他奇特的东西,如果你不是真的了解它们。

在这里为你快速解决。 http://jsfiddle.net/9fztL/4/

$(document).ready(function(){
    var tagsArray = []

    $.getJSON("https://api.deckbrew.com/mtg/cards?color=red&color=blue&rarity=rare&name=fire",function(result){
      $.each(result, function(i, field){
        $("div").append(field.name + "<br>" + field.url + "<br> "+ field.id + "<br> "+ field.set_url + "<br>");
        tagsArray.push(field.name);
      });

        $( "#tags" ).autocomplete({
          source: tagsArray
        });  
    });
});