我一直试图让 ajax 在带有 android 的 phonegap 2.5.0 应用程序上工作。通过stackoverflow和google扫描,但似乎没有任何帮助。请指教。
所以,我只是想发出一个简单的 AJAX GET 请求,如下所示:
var app = {
initialize: function() {
this.bindEvents();
},
bindEvents: function() {
document.addEventListener('deviceready', this.onDeviceReady, false);
},
onDeviceReady: function() {
var url='http://test.dev/app_dev.php/stuff/add-external?callback=test';
alert('connecting to '+url);
$.ajax({
type: 'GET',
url: url,
dataType: 'jsonp',
crossDomain: true,
contentType: "application/json",
success: function(res) {
alert('success:'+res);
},
error: function (xhr, ajaxOptions, thrownError) {
alert(xhr.status);
alert(thrownError);
},
complete: function(data) {
alert('complete');
}
});
}
};
即使在phonegap上似乎不需要它,我也使用jsonp,但有助于在浏览器上进行测试。所以这在我使用浏览器测试时有效:警报“连接到 url”,然后是“成功”,然后是“完成”。然而,在 phonegap 上,它只是提醒“连接到 url”,然后什么也没有。
我添加<access origin="*" />
到 config.xml 和 res/xml/config/xml。还将这些权限添加到 AndroidMainfest.xml:
<?xml version="1.0" encoding="utf-8" ?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:windowSoftInputMode="adjustPan" package="com.phonegap.exampleapp" android:versionName="1.1" android:versionCode="1">
<supports-screens android:largeScreens="true" android:normalScreens="true" android:smallScreens="true" android:resizeable="true" android:anyDensity="true" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<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" />
这是我的 res/xml/plugins.xml
<?xml version="1.0" encoding="utf-8" ?>
<plugins>
<plugin name="NetworkStatus" value="org.apache.cordova.NetworkManager" />
</plugins>
仍然无法正常工作:(。任何帮助表示赞赏。谢谢!