Ajax 调用如何在移动应用程序 (PhoneGap) 中工作,但在 PC 浏览器中却没有?

Posted

技术标签:

【中文标题】Ajax 调用如何在移动应用程序 (PhoneGap) 中工作,但在 PC 浏览器中却没有?【英文标题】:How Ajax call is working in mobile app (PhoneGap), but not in PC browser? 【发布时间】:2011-11-18 10:28:25 【问题描述】:

Ajax 对服务器页面的调用如何在移动应用程序中完美运行(使用 PhoneGap)。但是,当我从 PC 浏览器中的普通 html 页面运行相同的 Ajax 调用时,它不起作用。我想问题是跨域的。但是,它如何在移动应用中运行良好。

使用JSONP 它在电脑浏览器和移动应用程序(使用PhoneGap)中运行良好。但在没有datatype="jsonp" 的移动应用中也可以正常工作。

【问题讨论】:

【参考方案1】:

来自PhoneGap FAQ:

问。我想为 phonegap 创建一个应用程序,以通过 AJAX 访问外部部署的 Web 服务。我该如何解决这个问题 XmlHttpRequest的跨域安全策略?

A.跨域安全策略不影响PhoneGap 应用程序。由于 html 文件由 webkit 使用 file:// 协议调用,因此安全策略不适用。 (在 android 中,您可以通过编辑 AndroidManifest.xml 将 android.permission.INTERNET 授予您的应用程序)

【讨论】:

谢谢你。但是,在 PC 浏览器中,我们也使用 file:// 协议(只需在浏览器中打开 HTML 页面)。这是行不通的。如果跨域安全策略不影响 file://protocol 。那么请提供一些相关信息(可能只是发布链接)。 浏览器中的跨域策略仍然对本地文件强制执行。您将能够从浏览器发出跨域请求。 另外,不同的浏览器对本地文件的跨域策略也不一样,参见***.com/questions/3988494/…【参考方案2】:

移动应用程序(PhoneGap、Adobe AIR、Titanium、Native 等)对 XHR 请求没有桌面浏览器的同源限制。他们可以进行任何他们想要的跨域调用。这就是为什么它在手机上运行良好而不是在桌面上运行良好的原因。

JSONP 在两者中都能正常工作,因为它不使用 XHR。它使用

【讨论】:

【参考方案3】:

我猜所有基于 WebView 的视图都没有关于跨域 XHR 请求的限制规则。 跨域请求的另一种方式是服务器端桥接。

【讨论】:

【参考方案4】:

您可以使用 iqouta 在 phonegap 中进行 ajax 调用搜索 iqouta 易于使用!!

【讨论】:

使用 iqouta 范围!例如

以上是关于Ajax 调用如何在移动应用程序 (PhoneGap) 中工作,但在 PC 浏览器中却没有?的主要内容,如果未能解决你的问题,请参考以下文章

jquery移动列表视图样式在ajax调用后不应用样式

jquery如何在另一个结束后使用多个ajax调用

React:如何将我的 ajax api 调用移动到一个单独的组件中?

Phonegap android ajax调用在浏览器中工作,而不是在移动设备上

如何通过ajax调用检查网络连接

如何使用 ajax 从跨域调用 asp.net Web 服务