过去两天我一直在研究这个问题,并且看了很多其他的建议。是的,我可以从android模拟器和实际的Android手机上的phonegap应用程序中获得这个简单的ajax请求。
我的手机版本是(使用phonegap -v)3.0.0-0.14.3
我正在使用的代码是:
var url = 'http://www.thomas-bayer.com/sqlrest/CUSTOMER';
return $.ajax({
type: "GET",
url: url,
timeout: 60 * 1000
}).done(function (data) {
alert('hey');
}).fail(function (a, b, c) {
console.log(b + '|' + c);
});
我在日志中得到的结果只是:
误差|在file:///android_asset/www/js/index.js:62
我将设置添加到AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
我在Config.xml中有以下内容
<param name="android-package" value="org.apache.cordova.core.NetworkManager" />
当我检查navigator.connection.type
时,我在模拟器上获得了3G
,在实体电话上获得了wifi
。
知道还有什么可能出错?
更新 如果我在失败函数的第一个参数中记录JSON,我得到:
{"readyState":4,"status":404,"statusText":"error"}
答案 0 :(得分:49)
您应该whitelist域名,以便您的AJAX调用能够正常工作。
将此行添加到配置文件 - :
<access origin="*" />
除非另有说明,否则Phonegap的默认策略会阻止所有网络访问。以上行将禁用此安全限制。您还可以更具体地允许某些域绕过此安全功能,方法是将域名包含在配置文件中,如此
<access origin="http://yourdomain" />
答案 1 :(得分:15)
答案 2 :(得分:0)
我使用Visual Studio时有一个localhost网址。 我通过编辑VS项目Applicationhost.config文件并制作绑定协议的版本来解决,因为它是:port:而不是*:port:localhost,然后通过ip地址访问。 确保获得对该端口的所有引用。