2014-05-20 81 views
1

我正在嘗試爲Android連接到一個網站的數據庫創建一個應用程序。 我正在使用phonegap,並且我想使用JSON將數據從數據庫中恢復到應用程序。無法在Android上使用Phonegap獲取json數據

我在服務器端創建了一個php腳本來執行一些sql請求,並形成一個有效的json文件。

我創建了腳本來獲取數據,它在我的瀏覽器(在我的桌面上)運行時正在工作,但現在我試圖在移動設備上發送應用程序,它不再工作,這就像json請求沒有做任何事情。

我在config.xml中的白名單中添加了網站。

這裏是我使用的代碼:

<script> 
    $(document).bind("mobileinit", function(){ 
    $.mobile.allowCrossDomainPages = true; 
    }); 
</script> 

<script type="text/javascript"> 

    document.addEventListener("deviceready",onDeviceReady,false); 
    function onDeviceReady() 
    {  
     var db = window.openDatabase("GalagoPosts", "1.0", "GalagoPosts", 200000); 
     db.transaction(populateDB, errorCB, successCB); 
    } 

    // Populate the database 
    // 
    function populateDB(tx) 
    { 
     //tx.executeSql('DROP TABLE IF EXISTS GalagoTuto'); 
     tx.executeSql('CREATE TABLE IF NOT EXISTS GalagoTuto (id unique, title TEXT NOT NULL, artist TEXT NOT NULL, difficulty INTEGER NOT NULL, date TEXT NOT NULL, link TEXT NOT NULL)'); 

     // Ajax request 
     // 
     $url = "http://www.mydomain.com/JSON/json_get_data.php"; 
     $.getJSON($url, function(data) 
          { 
          alert("Got Data"); 
          $.each(data, function(index, element) 
              {         
              $("#latest").append(element.Title+"<br/>"); 
              }); 
          displayPages(); 
          }); 

    } 

    // Transaction error callback 
    // 
    function errorCB(tx, err) 
    { 
     alert("Error processing SQL: "+err.code); 
    } 

    // Transaction success callback 
    // 
    function successCB() 
    { 
     //alert("Succes"); 
    } 

    // Display main page after loading data 
    // 
    function displayPages() 
    { 
     $("body .splashScreen").delay(10).fadeOut(10, function() { 
     $("body .mainApp").fadeIn(10); 
     $("#nav-bar .current_page_item a").mouseenter(); 
     }); 
    } 
    </script> 

這裏是我的PHP代碼:

//echo $_GET['jsoncallback'].'('.json_encode($json_array).');'; 
    echo json_encode($json_array); 

我有和無回調試過,但我從來沒有得到警報「得到的數據」。 我使用Phonegap 3.4.0,jQuery 1.11.1和jQuery mobile 1.4.2。

我花了大量的時間試圖找出它,在谷歌搜索,但最終沒有在我的手機上工作。

有沒有人有一個想法如何做到這一點? 謝謝。

回答

0

我終於弄明白了。我無法相信它有多愚蠢。

我用這個代碼,包括jQuery的:

<script type="text/javascript" src="http://code.jquery.com/mobile/1.4.2/jquery.mobile-1.4.2.min.js"></script> 

但是,如果你沒有在你的config.xml中添加此,它不工作:

<access origin="http://code.jquery.com" subdomains="true" /> 

我不認爲這有必要讓白名單上的jquery.com。

謝謝您的幫助。

0

試試這個

alert(data); //alert("Got Data"); 

如果它給人的警報,JSON數據

檢查在警戒Title它的工作原理代碼是正確的。

+0

我試過了,但沒有奏效。只是好奇,爲什麼警報(數據)工作,如果警報(「有數據」)不是? – whiteShadow

+0

alert()將顯示從服務器接收的json內容。如果空白處於警報狀態,所以服務器沒有響應,如果警報沒有出現,那麼代碼中會出現一些錯誤。你可以在consoel(F12)chrome或firefox中粘貼相同的代碼 –