JavaScript 全局不保持作用域?创建自动完成 Web 服务 json 对象

标签 javascript jquery json web-services

您好,我正在尝试自动完成城市列表,但返回的 json 对象未格式化为用于自动完成,需要一个名为“label”:“cityname”的字段来显示自动完成,因此我正在尝试重新格式化我使用 ajax 调用将 package.json 对象写入全局变量,问题是,一旦 ajax 调用返回,我的 jsData 是 [] 一个空数组...我做错了什么?为什么全局变量不保留值?

http://www.andymatthews.net/read/2012/03/27/jQuery-Mobile-Autocomplete-now-available

<script>
        $("#nec").bind("pageshow", function(e) {
            var jsData = [];

            $.ajax({
                   url: "http://localhost:8084/REST/resources/cities",
                   data:{},
                   type: 'GET',
                   crossDomain: true,
                   dataType: 'jsonp',
                   jsonp: 'jsonp',
                   jsonpCallback: 'jsoncallback',
                   error: function(error){
                       console.log(error);
                   },
                   success: function(result) {
                       for (i = 0; i < result.length; i++){
                             jsData.push({label:result[i].name, value:result[i]}); 
                        }
                        console.log(JSON.stringify(jsData));   
                       },
                });

            $("#textinput").autocomplete({
                target: $('#suggestions'),
                source: jsData,
                minLength: 1
            });

});
    </script>

我对 JS 有点陌生,所以有一些东西我还没有掌握

最佳答案

你必须输入

 $("#textinput").autocomplete({
     target: $('#suggestions'),
     source: jsData,
     minLength: 1
 });

在您的 success() 函数中。

因为,jsData 会在 success() 内更新。 pageshow 事件的匿名函数的执行速度比 success() 的执行速度更快。因此,在该函数中 jsData 保持为空。

您可以通过自动完成本身检索数据。 See here

关于JavaScript 全局不保持作用域?创建自动完成 Web 服务 json 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10666410/

相关文章:

javascript - 使 HTML5 FileReader 处理 heic 文件

没有回调的 JavaScript 原生 Promise()

javascript - 如何使用 jQuery foreach 进入多维数组?奇怪的行为

JavaScript 返回克隆不是 countMembers 的函数

java - jackson- 对象列表 com.fasterxml.jackson.core.io.JsonEOFException : Unexpected end-of-input in field name?

javascript - 如何根据 "schema"过滤JSON对象

json - 无法将字符串映射转换为 json

javascript - ASP.NET 中 <div> 标签之间允许的最大值

javascript - Lumia 640 LTE edge explorer - 未定义 javascript $

jquery - 即使为空也保留 td "expanded"