0

我一直试图让 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>

仍然无法正常工作:(。任何帮助表示赞赏。谢谢!

4

2 回答 2

0

我刚刚意识到这个问题与phonegap无关。我在手机的 wi-fi 设置上为我的计算机配置了代理,以测试在移动浏览器上运行良好,但应用程序似乎忽略了这一点。因此,当在 web 上使用外部 url 而不是从我的本地服务器测试它时,它就像一个魅力。

于 2013-06-25T09:54:26.377 回答
0

为什么不简化?

$.getJSON('yourtarget.php', function(data) {
  alert("my name is: "+data.name+" !!! ");
});
于 2013-06-24T11:48:40.517 回答