Phonegap AJAX问题

时间:2013-06-24 11:13:55

标签: ajax cordova

我很难尝试使用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>

仍然没有工作:(。感谢任何帮助。谢谢!

2 个答案:

答案 0 :(得分:0)

为什么不简化?

$.getJSON('yourtarget.php', function(data) {
  alert("my name is: "+data.name+" !!! ");
});

答案 1 :(得分:0)

我刚刚意识到这个问题与手机无关。我在手机的wi-fi设置上配置代理到我的电脑进行测试,这可以从移动浏览器中正常工作,但是应用程序似乎忽略了这一点。因此,当在网络上使用外部网址进行测试时,而不是从我的本地服务器进行测试时,它可以作为魅力。