Ajax对服务器页面的调用如何在移动应用程序中完美运行(使用PhoneGap)。但是,当我从PC浏览器中的普通HTML页面运行相同的Ajax调用时,它无法正常工作。我想这个问题是跨域的。但是,它如何在移动应用程序中运行良好。
使用JSONP
它在PC浏览器和移动应用程序(使用PhoneGap)中运行良好。但是在没有datatype="jsonp"
的移动应用中也可以正常工作。
答案 0 :(得分:12)
来自PhoneGap FAQ:
Q值。我想为phonegap创建一个应用程序,以通过AJAX访问外部部署的Web服务。我怎样才能解决这个问题 XmlHttpRequest的跨域安全策略?
一个。跨域安全策略不会影响PhoneGap应用程序。由于webkit使用file:// protocol调用html文件,因此安全策略不适用。 (在Android中,您可以通过编辑AndroidManifest.xml将android.permission.INTERNET授予您的应用程序)
答案 1 :(得分:7)
移动应用程序(PhoneGap,Adobe AIR,Titanium,Native等)对桌面浏览器执行的XHR请求没有相同的来源限制。他们可以进行任何他们想要的跨域调用。这就是为什么它在手机上工作正常,而不是在桌面上工作。
JSONP可以正常工作,因为它不使用XHR。它使用< script>执行跨域请求。标签。因此它绕过了浏览器的同源策略。 JSONP只能在远程服务以函数形式返回数据然后立即执行时才能工作。
答案 2 :(得分:1)
我猜所有基于WebView的视图都没有关于跨域XHR请求的限制规则。 跨域请求的另一种方法是服务器端桥接。
答案 3 :(得分:0)
你可以使用iqouta在phonegap搜索iqouta进行ajax调用,方便使用!!