3

编辑: JQuery Mobile + Phonegap AJAX 问题的解决方案:

subdomains="true"config.xml 中的属性在phonegap 2.9.0 中不起作用,对子域的每个请求都将返回 200 但 $.ajax 不会触发成功功能(并且 $.getJSON 无论如何也不会触发)。*.domain.tld另外:官方文档中所述的语法不起作用,我发现解决该问题的唯一方法是:将访问来源和访问 uri 设置为"*"(全部)

<access origin="*"/>
<access uri="*"/>

我正在使用 jQuery Mobile Framework 和 Phonegap 开发一个移动应用程序。我刚刚向我的应用程序添加了一个 AJAX 请求,该请求用于从我的网络服务器获取数据。该页面正在正确加载,但 Android (4.1.2) 从未触发 AJAX 事件或从未收到来自 Web 服务器的请求,实际上它只是挂在加载微调器上。

奇怪的是,我已经对同一台服务器(但具有不同的域)使用了 AJAX 请求,效果很好:

$.getJSON("[...]checkupdate.php?callback=?", function(data){    
   [...]    
})

我也尝试使用 $.getJSON 进行第二个请求,它在我的计算机上运行,​​但在 Android 上失败。我开始四处寻找解决方案,发现在 $.ajax 中将缓存设置为 false 可能会有所帮助,因此我重写了代码,但它仍然无法正常工作。

$.ajax({
cache : false,
type: 'GET',
url: requestURL,
dataType: 'jsonp',
context: document.body,
success: function(data){
    [...]
}});

是否还有其他事情要做才能让它发挥作用?

4

1 回答 1

0

我找到了解决这个问题的方法。我注意到,subdomains="true"phonegap 的 config.xml 中的属性不起作用。(Phonegap 2.9.0)。对子域的每个请求都将返回状态 200,但$.ajax不会触发成功功能($.getJSON也不会触发)。官方文档中所述的语法*.domain.tld也不适用于我,我发现解决该问题的唯一方法是将访问来源和访问 uri 设置为"*"(全部)

于 2013-08-13T05:48:39.020 回答