在cordova中没有getJSON的结果

时间:2014-10-13 22:12:22

标签: javascript php jquery json cordova

我的cordova应用程序有问题。我有一个带有JSON输出的迷你REST服务的php页面,我想在我的应用程序中使用这个结果。

Php页面:

<?
header("Content-Type:application/json");

function response($status, $status_message, $data){
    header("HTTP/1.1 $status $status_message");

    echo $data;
}


$link = mysqli_connect("db4free.net", "luigi", "nzor4csv4", "usl5");
if (mysqli_connect_errno()) {
    response(400, "Failed to connect to MySQL", mysqli_connect_error());
}


if( !empty($_GET['prestazioni']) ){
    //make response using database 
    $result = mysqli_query($link,"SELECT DISTINCT `ppasez_descrizione` FROM `prestazioni`");

    $arr = array();

    while($obj = mysqli_fetch_assoc($result)) {
        $arr[] = $obj;

    }
    $message= json_encode($arr);

    response(200, "lista prestazioni", $message);
} else {
    //invalid request
    response(400, "invalid request", NULL);
}
?>

html页面:

<html>
<head>
    <meta charset="utf-8" />
    <script type="text/javascript" src="cordova.js"></script>
    <link rel="stylesheet" href="js/libs/jquery-mobile/jquery.mobile.css" />
    <script type="text/javascript" src="js/libs/jquery/jquery.js"></script>
    <script type="text/javascript" src="js/libs/jquery-mobile/jquery.mobile.js"></script>

    <script type="text/javascript" src="js/mainjs.js"></script>
    <script>
        $(document).ready(function(){
            $.support.cors=true;
            $.mobile.allowCrossDomainPages = true;
            $("button").click(function(){
                $.getJSON('http://www.****.it/provaluigi/index.php?prestazioni=""',function(data){
                    $.each(data, function(i, dat){
                        $("ul").append("<li>"+dat.ppasez_descrizione+"</li>");  
                    });
                    $('ul').listview('refresh');
                    //if $("list") do $("list").listview("refresh);
                });
            });
        });
    </script>
    <title>
        Prestazioni
    </title>
</head>

<body>
    <section id="page1" data-role="page" data-fullscreen="true">
        <div class="content" data-role="content">
            <ul data-role="listview" data-filter="true" data-filterplaceholder="cerca prestazione">
            </ul>
        </div>
    </section>
</body>

此代码在本地域上工作完美,但我无法在cordova中看到结果。

如你所见,我插入:

            $.support.cors=true;
            $.mobile.allowCrossDomainPages = true;

<access origin="*"/>

在config.xml中允许跨域请求。

当我使用&#34; ripple扩展&#34;进行镀铬测试时我注意到2个错误:

Failed to load resource    http://localhost:8383/Centri%20USL/config.xml

Failed to load resource: net::ERR_EMPTY_RESPONSE     http://localhost:8383/Centri%20USL/cordova.js

因此可能在cordova包的链接中存在一些错误,但我使用netbeans所以它都是自动的。 有人可以帮我找到错误吗?

谢谢大家

2 个答案:

答案 0 :(得分:0)

根据PhoneGap documentation

  

白名单规则可在res / xml / cordova.xml

中找到

尝试将该规则添加到res/xml/cordova.xml

答案 1 :(得分:-1)

可能是因为您尝试仅使用localhost访问并且没有真正的计算机名称而导致错误。输入您的主机名或IP地址。

这意味着您需要将http://localhost:8383/更改为http://192.168.1.1:8383/http://fastbox:8383