gpt4 book ai didi

javascript - getJSON 到字符串然后循环遍历字符串

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

我有以下代码,包含在 keypress 函数中:

$.getJSON('dimensions.json', function(data) {
$.each(data, function(index) {
$('#div1').append(index);
});
});

我尝试首先获取 JSON 字符串,将其保存在变量中,然后运行 ​​each()。我想基本上将 each()getJSON() 函数分开,因为我不希望它为每个按键获取 json 文件。

我已经尝试过这个,但没有成功:

var JSONstr = $.getJSON('dimensions.json');
$.each(JSONstr, function(index) {
$('#div1').append(index);
});

最佳答案

在第一个示例中,您在回调中执行 $.each 。回调在收到结果后由其他回调执行,而 $.getJSON 立即返回而不等待结果(因为 JavaScript 设计上没有阻塞) .

因此,第二个示例中的代码永远无法工作: $.each 在从 Web 服务器收到任何结果之前开始,甚至可能在发送请求之前开始。无论 $.getJSON 的返回值是什么,根据 JavaScript 的设计,它不可能是 AJAX 请求的结果。

UPD:看到您的评论,现在我明白您想做什么。以下是如何执行此操作的简单示例:

function ActualHandler(data) {
$.each(data, function(index) {
$('#div1').append(index);
});
}

function KeypressHandler() {
if (window.my_data) { // If we have the data saved, work with it
ActualHandler(window.my_data);
}
else { // Otherwise, send the request, wait for the answer, then do something
$.getJSON('dimensions.json', function(data) {
window.my_data = data; // Save the data
ActualHandler(data); // And *then* work on it
});
}
}

此处,ActualHandler 在接收到数据之前不会启动,一旦发生,所有后续点击都将立即处理。

这种特殊情况下的缺点是,如果用户在第一个请求运行时再次单击,则会发送另一个请求。但要解决这个问题,您需要维护一些队列,这超出了本文的范围。

关于javascript - getJSON 到字符串然后循环遍历字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8774025/

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