-1

jquery の get JSON 関数で JSOn を解析できません。助けてください。htmlコードは次のとおりです。

 function getList()
{
$.getJSON("http://localhost/webservice/list.php", function(data){
    for (var i=0, len=data.length; i < len; i++) 
     {
        alert(data[i]);
    }

});

そして、これが header('Content-type: application/json') に設定された list.php ファイルです。

{
"promos":[
{"promo":{"id":"1","name":"MADINAT JUMEIRAH AL QASR","image":"","stars":"","highlights":""}},
{"promo":{"id":"2","name":"MADINAT JUMEIRAH DAR AL MASYAF","image":"","stars":"","highlights":""}},
{"promo":{"id":"3","name":"ATLANTIS THE PALM","image":"","stars":"","highlights":""}},
{"promo":{"id":"4","name":"JUMEIRAH ZABEEL SARAY 5*","image":"","stars":"","highlights":""}},
{"promo":{"id":"5","name":"HABTOOR GRAND BEACH RESORT & SPA","image":"","stars":"","highlights":""}},
{"promo":{"id":"6","name":"HILTON DUBAI JUMEIRAH RESORT","image":"","stars":"","highlights":""}}
]
}

編集: data.promos ではなくデータをループするべきではないと誰かが言いました。これを試しましたが、役に立ちません。私はJSONが初めてです:

for (var i=0, len=data.promos.length; i < len; i++) 
     {
        alert(data.promos[i]);
    }
4

3 に答える 3

4

datapromos配列ではなく、1 つのプロパティ ( ) を持つオブジェクトです。ループすることはできません。(ループオーバーできますdata.promos)。

于 2013-07-20T21:05:27.190 に答える
1

JSON-Data の最上位プロパティの名前は次のpromosとおりです。

<html>
<head>
    <script language="javascript"
            type="text/javascript"
            src="./jquery-1.10.2.min.js" ></script>
</head>
<body>

<script type="text/javascript">

    function getList() {

        $.getJSON( "http://localhost:8888/testbed/jsonProvider.php", function( data ){

            // Use JavaScript's log facility to learn what's inside a variable
            console.log( data );

            var len = data.promos.length;

            for ( var i=0; i < len; i++ ) {

                alert( data.promos[i].promo.id );

            }

        });

    }

    getList();

</script>

</body>
</html>

そしてこのPHPデータプロバイダーjsonProvider.php

<?php
header('Content-type: application/json');
?>
{
"promos":[
{"promo":{"id":"1","name":"MADINAT JUMEIRAH AL QASR","image":"","stars":"","highlights":""}},
{"promo":{"id":"2","name":"MADINAT JUMEIRAH DAR AL MASYAF","image":"","stars":"","highlights":""}},
{"promo":{"id":"3","name":"ATLANTIS THE PALM","image":"","stars":"","highlights":""}},
{"promo":{"id":"4","name":"JUMEIRAH ZABEEL SARAY 5*","image":"","stars":"","highlights":""}},
{"promo":{"id":"5","name":"HABTOOR GRAND BEACH RESORT & SPA","image":"","stars":"","highlights":""}},
{"promo":{"id":"6","name":"HILTON DUBAI JUMEIRAH RESORT","image":"","stars":"","highlights":""}}
]
}
于 2013-07-20T21:43:07.220 に答える
-1

これを試して :

$.each(data.promo, function(key, value) {
        console.log(value.id);
        //and so on...
});
于 2013-07-20T21:18:28.177 に答える