2013-06-24 89 views
0

我卡住了試圖使android的phonegap 2.5.0應用程序使ajax工作。掃描通過stackoverflow和谷歌,但似乎沒有任何幫助。請指教。Phonegap的AJAX問題

所以,我只是試圖讓一個簡單的AJAX得到這樣的要求:

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上,但有助於在瀏覽器上進行測試。 所以當我使用瀏覽器進行測試時,它會生效:警報「連接到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> 

仍然沒有工作:(任何幫助表示讚賞感謝。!

+0

將「this.onDeviceReady」更改爲「app.onDeviceReady」並讓我們知道它是如何發生的。 –

+0

我不明白這可能是相關的,因爲這種方法在設備上觸發很好。不工作的部分是阿賈克斯本身 –

+0

我明白,但你不能說科爾多瓦是否實際上提高了平均或其他的東西是射擊。由於應用程序不是實例對象,「this」指向窗口對象(很可能)。試試我的建議,讓我們知道它是怎麼回事。 –

回答

0

我剛剛意識到問題與手機無關。我在手機的Wi-Fi設置上配置了代理到我的電腦上進行測試,這在手機瀏覽器中可以正常工作,但應用程序似乎忽略了這一點。因此,當使用網頁上的外部網址進行測試時,而不是從我的本地服務器進行測試時,它就成爲一種魅力。

0

爲什麼不能簡化?

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

我實際上正在嘗試稍後發出POST請求,只是首先測試GET以獲得簡單性。無論哪種情況下,它不會工作 –

+0

奇怪,它適用於我完美,可能是一些版本衝突或我不能看到 –

+0

你介意分享你的配置文件? –