【问题标题】:PhoneGap: some AJAX POSTs are never sentPhoneGap:某些 AJAX POST 从未发送过
【发布时间】:2015-01-05 20:51:38
【问题描述】:

我的 PhoneGap 应用是用 jQuery mobile 构建的,目前我正在 Android 上进行测试。 jqm 中的跨域参数已设置,我使用通配符作为 phonegap“访问”-origins。该应用程序使用 AJAX 进行一些 JSON 通信。现在所有 ajax GET 似乎都可以正常工作,但大约 40% 的 POST 从未到达我的服务器(即甚至没有标题,日志显示没有这些帖子的迹象)。所有帖子都是对完全相同地址的非常基本的 ajax 调用,具有一些最小的 json 负载,例如 id 和一些短值。我正在使用 Chrome 设备检查,可以确认帖子看起来一致,但其中大约 40% 的帖子保持“待处理”状态并最终超时。

我读过一些关于缓存的文章,post-data 总是唯一的,但是我在服务器响应中添加了 nocache-headers。帖子不应该被缓存 imo,但这对我没有帮助。

裸 jqm-app 在浏览器中运行良好。嵌入在phonegap中,一些帖子失败了..有人有线索吗?

【问题讨论】:

  • 请在此处显示您的代码。
  • @Dato',这是一个相当大的项目。如果您想知道我的 jquery ajax 函数:它都是相同的函数,工作调用和不工作调用。它有方法设置为post,一个静态url和一个长度为2的小对象作为数据,没什么复杂的。

标签: android cordova jquery-mobile


【解决方案1】:

尝试将这些选项添加到您的 jQuery.ajax 调用中

dataType: 'jsonp',
cache: false

第一个允许跨域发布,第二个确保每个请求接收到一个唯一的参数来绕过浏览器端缓存

【讨论】:

  • 谢谢,但这需要切换到 jsonp 机制并丢弃当前的 ajax 通信。我更愿意找到解决当前设置的解决方案。
  • 你试过 cache:false 选项了吗?
  • 是的,可惜没有成功
  • 您是否查看了“网络”面板以了解实际发送了哪些网络请求,哪些未发送?
  • 是的,正如我在开篇文章中提到的,所有帖子都已发送,但有些帖子保持“待处理”状态。顺便说一句,有时第一个帖子(启动后)会挂起,而后面的帖子只是工作,所以我怀疑这是一个缓存的东西。
【解决方案2】:

好的,我已经建立了第二个测试项目,它仅具有以短时间间隔(例如 2 秒)发送 ajax 请求(包括 post 和 get)的功能。事实证明,这也导致超时,经过几次迭代,一切都超时了。

最近我在开发过程中遇到了 Chrome 崩溃,因此我设置了我的服务器以进行一些精心安排的日志记录。这次我没有从 Eclipse 启动应用程序,而是断开我的手机并在手机本身上手动启动它。猜猜看:一切正常,所有 ajax 请求都到达服务器。

我已经在没有 Chrome DevTools 设备检查的情况下进行了测试,但是将手机连接到 USB:没有帮助。但是 Chrome 经常崩溃仍然让我怀疑它在连接到电脑时与它有关。

更新: 在发送一些较大的请求时,我又遇到了问题,比如 base64 中的图像。现在我在我的服务器上设置标题“连接:关闭”,事情似乎再次顺利,即使使用 Chrome DevTools 检查,除了 Chrome 崩溃。

【讨论】:

    猜你喜欢
    • 2023-03-29
    • 2011-12-11
    • 2014-11-20
    • 1970-01-01
    • 2015-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-08
    相关资源
    最近更新 更多