【问题标题】:jQuery Mobile + Phonegap on Android - no AjaxAndroid 上的 jQuery Mobile + Phonegap - 没有 Ajax
【发布时间】:2013-06-26 07:11:47
【问题描述】:

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

config.xml 中的

subdomains="true" 属性在 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){
    [...]
}});

还有什么其他办法可以让它工作吗?

【问题讨论】:

  • @Selvin 忘记写了,我已经设置了正确的覆盖。 ($.mobile.allowCrossDomainPages 和 $.support.cors),在请求中禁用缓存,在 config.xml 中将域列入白名单(我正在使用 JSONP)还有什么我错过的吗?
  • 这不是只有在我使用本地文件发送请求时才需要吗?除此之外,我真的很想知道为什么完全相同的代码在下面几行工作......
  • 想法: 1. 看看logout 输出的线索。 2. 你可能想处理 ajax 完成回调以了解是否出现问题(或者是否实际处理了 ajax 调用)。

标签: android ajax jquery-mobile


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2012-06-24
    • 1970-01-01
    • 1970-01-01
    • 2014-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多