我很难尝试使用android在phonegap 2.5.0应用程序上进行ajax工作。通过stackoverflow和谷歌扫描,但似乎没有任何帮助。请指教。
所以,我只想尝试这样一个简单的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');
}
});
}
};
我使用jsonp,即使在phonegap上似乎不需要,但有助于在浏览器上进行测试。 因此,当我使用浏览器进行测试时,这会起作用:提醒“连接到网址”,然后“成功”,然后“完成”。然而,在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>
仍然没有工作:(。感谢任何帮助。谢谢!
答案 0 :(得分:0)
为什么不简化?
$.getJSON('yourtarget.php', function(data) {
alert("my name is: "+data.name+" !!! ");
});
答案 1 :(得分:0)
我刚刚意识到这个问题与手机无关。我在手机的wi-fi设置上配置代理到我的电脑进行测试,这可以从移动浏览器中正常工作,但是应用程序似乎忽略了这一点。因此,当在网络上使用外部网址进行测试时,而不是从我的本地服务器进行测试时,它可以作为魅力。