我对android很新,我遇到了一个问题,即使用Phonegap开发的本机app中没有加载带有ajax调用的页面。
跨域AJAX POST
- 请求在包含移动电话上的浏览器的Web浏览器上运行良好,但不适用于使用Phonegap构建的本机应用程序。
我在durandal
创建了一个应用,可以从Facebook
获取数据并在页面中显示。它在浏览器中工作正常但具有ajax调用的页面未加载到使用Phonegap
构建的本机应用程序中。注意:其他静态页面工作正常。
我的Ajax脚本:
define(function(require){
return {
getCustomers:function(){
//do some ajax and return a promise
return $.ajax({
url: 'http://graph.facebook.com/facebook?callback=?',
dataType: 'json',
}).promise();
}
};
});
域名白名单 - config.xml
<access origin="*"/>
<!-- <content src="http://mysite.com/myapp.html" /> for external pages -->
<content src="index.html" />
用户权限
<uses-permission android:name="android.permission.INTERNET" />
我收到了一个错误。我不知道这与此有关吗?
TypeError: Result of expression 'parentElement' [null] is not an object. at file:///android_asset/www/js/index.js:41
答案 0 :(得分:1)
必须在服务器端启用CORS参数,并传递“mobile.allowCrossDomainPages = true;”在phonegap。
在stackoverflow中搜索CORS相关的队列,有很多解决方案。
让我解释为什么它适用于移动浏览器,但不适用于手机包装。 Phonegap打包从应用程序的本地文件系统中提取文件,使引用域为“Local”。当您向URL发出请求时,它显然位于不同的域中,因此是CORS。在phonegap配置中启用CORS参数主要解决了这个问题。如果属于,则必须检查webservice / URL是否支持CORS。寻找服务器端CORS参数启用。
答案 1 :(得分:0)
您确定为您的项目明确设置了电话空白吗?
请查看此页面:http://www.adobe.com/devnet/html5/articles/getting-started-with-phonegap-in-eclipse-for-android.html并逐步检查。
答案 2 :(得分:0)
它应该工作。无论如何,尝试将其添加到头部代码
$(document).bind("mobileinit", function () {
$.support.cors = true;
$.mobile.allowCrossDomainPages = true;
});
并尝试删除此处的,
return $.ajax({
url: 'http://graph.facebook.com/facebook?callback=?',
dataType: 'json' //<<---HERE
}).promise();
是json
还是jsonp
?