gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 19:38:40 25 4
gpt4 key购买 nike

您好,我正在尝试自动完成城市列表,但返回的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com