2014-02-27 28 views
0

我的phonegap項目有一個問題,這個代碼很好的工作在網絡瀏覽器,但沒有在android模擬器。在模擬器總是得到'加加爾'(失敗的消息),這是什麼錯?JSON通過Ajax在手機差距不好工作

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Loading data into a PhoneGap app</title> 

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script> 
</head> 
<body> 
    <ul id="your-tweets"></ul> 

    <script> 
$(document).ready(function(){ 
    $.ajax({ 
     url: 'http://127.0.0.1/json.php', 
     dataType: 'jsonp', 
     jsonp: 'jsoncallback', 
     timeout: 5000, 
     success: function(data, status){ 
      $('#your-tweets').append('<li>Sukses</li>'); 
     }, 
     error: function(){ 
      $('#your-tweets').append('<li>Gagal</li>'); 
     } 
    }); 
}); 
</script> 


</body> 
</html> 
+0

爲什麼RU試圖使用jsonp ithink json對你來說工作正常並且在url中定義回調 – Jain

+0

我認爲你在url和dataType中犯了錯誤,因爲你試圖在你的模擬器中訪問你的localhost php文件更好地把你的文件放入服務器端,並嘗試訪問它無論如何,你會去那最後...和PLZ研究JSON和JSONP之間的區別和它的用途! ... – kamesh

回答

0

首先,你正在嘗試使用JSONP當你不需要。 JSONP是與JSON完全不同的通信方法。 JSONP將在請求完成時返回對您指定的函數(在本例中爲jsoncallback)的調用,其中JSON將簡單地返回可解析的數據字符串。 JSONP通過將<script>字段添加到您的內容正文中,其中JSON通過使用瀏覽器AJAX請求功能工作。

您也嘗試訪問本地主機上的Web服務器。如果您在與您要訪問的服務器相同的機器上的瀏覽器上訪問該頁面,這當然會起作用,但在模擬器上,您需要通過網絡上的特定IP訪問服務器。

嘗試通過使用

ipconfig 

..如果它是Windows或

ifconfig 

..如果這是由於Linux

使用的IP地址,或者指定獲取服務器的IP以太網適配器或WiFi適配器,具體取決於您當前使用的是哪一個。

無論這是否可行,我都不確定,因爲我相信Android仿真器並不實際連接到您的網絡,而是通過某種NAT或橋接連接到您當前的網絡連接。

如果您的服務託管在實際的INTERNET IP地址上,那麼您可以使用它。

注:爲了使用AJAX比你所訪問的一個的主機上,你可能需要提供在res/xml/cordova.xml文件白名單,在你的Ajax後描述here

+0

是的特定ID是http://127.0.0.1/ – user3024064

+0

確切地說,127.0.0.1是你的本地主機地址。在Android模擬器中,這將轉換爲Android設備本地主機,因此Android副本將嘗試連接到Android設備上的Web服務器,而不是在Windows/Linux計算機上。 – Seidr

1

URL是錯誤的。你指的是127.0.0.1,它是手機本身的本地主機。可能重複的this其他的stackoverflow問題。

你的答案是here

0

127.0.0.1始終指向您的手機本身。我肯定你是不是在手機上運行的服務器。所以請將ipaddress更改爲您運行服務器的系統。它肯定會工作。