gpt4 book ai didi

javascript - Phonegap 中的 HTTP 请求

转载 作者:行者123 更新时间:2023-11-30 10:36:46 26 4
gpt4 key购买 nike

我在使用 Phonegap 时遇到了一个奇怪的问题。我的 XMLHttpRequests 触发了两次;我正在开发的应用程序中使用 XMLHttpRequests 来创建要选择的动态事件列表。 jQuery 也是我正在使用的库之一。

任何时候我使用 XMLHttpRequest,无论是 vanilla 还是 jQuery,它都会执行两次,即使它应该只运行一次。还有其他人遇到过这个问题吗?

这里有一些示例代码:

(function(){
var request = new XMLHttpRequest();
request.open("GET", "http://{site-url-hidden-for-privacy}/events/list", true);
request.onreadystatechange = function(){
if(request.readyState == 4){
if(request.status == 200 || request.status == 0){
parse_events(JSON.parse( request.responseText ));
}
}
}
request.send();
})();

XMLHttpResponse 文本是一个 JSON 数组,parse_events 只是获取该数组并使用它为菜单创建一组选择选项。

有谁知道为什么这会触发两次,本质上是为每个事件创建两个选项,而实际上应该只有一个?

最佳答案

好的,我明白了。我和一个同事一起做这个项目,我们忘记了监听 deviceready 事件的触发,因为我们使用的是 phonegap。我们在窗口加载时绑定(bind)“在线”和“离线”事件,而不是在设备准备就绪时绑定(bind)。

之前:

document.addEventListener("DOMContentLoaded", function(){
document.addEventListener("online", function(){...}, false);
document.addEventListener("offline", function(){...}, false);
}, false);

解决方法:

document.addEventListener("DOMContentLoaded", function(){
document.addEventListener("deviceready",function(){
document.addEventListener("online", function(){...}, false);
document.addEventListener("offline", function(){...}, false);
},false);
}, false);

我不确定为什么,因为它没有完全意义,但我认为没有通过“设备就绪”导致 HTTP 请求进行两次,一次是在页面加载时,一次是在设备准备就绪时.

修复是让它只在设备准备就绪时运行,如上所示。

关于javascript - Phonegap 中的 HTTP 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13585854/

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