Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery UI自动完成的JSON数组_Javascript_Jquery_Json_Autocomplete - Fatal编程技术网

Javascript jQuery UI自动完成的JSON数组

Javascript jQuery UI自动完成的JSON数组,javascript,jquery,json,autocomplete,Javascript,Jquery,Json,Autocomplete,任务是获取带有城市名称数组的本地JSON文件,并将其置于自动完成状态。没有关于JSON数组的确切信息,总是谈论成对的“键”-“值”。所以我有一个问题:在JSON中是否可以使用带有单个项的数组?如果可以,我的代码的错误在哪里? JSON [ "Minsk", "London", "Riga", "Vilnius", "Warszaw", "Paris", "Moscow", "Tallin", "Berlin",

任务是获取带有城市名称数组的本地JSON文件,并将其置于自动完成状态。没有关于JSON数组的确切信息,总是谈论成对的“键”-“值”。所以我有一个问题:在JSON中是否可以使用带有单个项的数组?如果可以,我的代码的错误在哪里?
JSON

    [
    "Minsk",
    "London",
    "Riga",
    "Vilnius",
    "Warszaw",
    "Paris",
    "Moscow",
    "Tallin",
    "Berlin",
    "Amsterdam",
    "Oslo",
    "Helsinki"
]  
$('#tags').autocomplete({
    source: function(request, response) {
        var result = $.ajax({
            url: '../source.json',
            method: 'GET',
            dataType: 'json',
            success: function(data) {
                var array = [];
                response($.each( data, function(item) {
                    array.push(item);
                    return array;
                }));
                return array;
            }
        });
    }
});  
JS

    [
    "Minsk",
    "London",
    "Riga",
    "Vilnius",
    "Warszaw",
    "Paris",
    "Moscow",
    "Tallin",
    "Berlin",
    "Amsterdam",
    "Oslo",
    "Helsinki"
]  
$('#tags').autocomplete({
    source: function(request, response) {
        var result = $.ajax({
            url: '../source.json',
            method: 'GET',
            dataType: 'json',
            success: function(data) {
                var array = [];
                response($.each( data, function(item) {
                    array.push(item);
                    return array;
                }));
                return array;
            }
        });
    }
});  

JSON支持数组和对象

您的代码不会将结果返回到源代码。事实上,如果不使用
setInterval
来检查它或类似的东西,就不能等待$.ajax()完成。最好的方法是在页面加载时访问JSON文件一次,并从那里引用源代码

尝试:

var dict=[];
$.ajax({
网址:'https://dl.dropboxusercontent.com/u/100496307/source.json',
方法:“GET”,
数据类型:“json”,
成功:功能(数据){
$.each(数据,函数(){
dict.push(this.toString());
});
返回命令;
}
});
$(“#标记”)。自动完成({
资料来源:dict
});
$(“#标记”).keydown(函数(){
控制台日志(dict);
});


您可以发布javascript错误是什么吗?您可以在浏览器开发工具中查看控制台。最糟糕的是没有错误,我会尝试导航到
source.json
文件。如果可行,请将
。/source.json
设置为绝对路径,然后查看AJAX调用是否可行。在success函数中,我会放入一个
console.log(data)
语句,这样您就可以看到从URL返回的内容。“本地JSON文件”-如果您正在加载/试图直接从您的计算机读取文件(即使用
文件://
),这不太可能起作用。一旦您超越了基本开发,您通常需要像服务文件一样服务文件webserver@Mark我添加了绝对路径,成功函数不起作用:消息是数据未定义我已更改了文件JSON的位置并尝试了您的解决方案-没有任何反应([JSON now is here]()修复了。请尝试该代码段。谢谢!它可以工作!为autocomplete编辑json时出错,对吗?请解释行“complete=true;”是什么意思,以及为什么要编写“(function(){return dict;}”)而不是“function(){return dict;}”?错误是您试图使用的源数组还不存在(它必须用AJAX抓住它)。如果AJAX未加载,当前代码将使用空数组,但如果已加载,则将使用AJAX数组。
已完成
是早期尝试的结果。现在将其删除。我使用函数调用是因为我认为它不会在每次键入时动态抓取dict,并且只使用您第一次绑定
时的dict值。autocomplete()
,但我刚刚测试了它,这是错误的。我也将删除它。很好的捕获。