无法在Android上使用Phonegap获取json数据

时间:2014-05-20 05:24:15

标签: jquery json cordova

我正在尝试创建一个连接到网站数据库的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。

我花了很多时间试图解决这个问题,在google上搜索,但最终我的手机上没有任何效果。

有没有人知道如何做到这一点? 谢谢。

2 个答案:

答案 0 :(得分:0)

试试这个

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

如果它使用json数据提供警报

检查Title的警报是否有效。

答案 1 :(得分: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。

感谢您的帮助。