Php 用jquery解析JSON

Php 用jquery解析JSON,php,jquery,json,Php,Jquery,Json,我无法使用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]); } }); 编辑:有人提到我不应该在数据上循环,而应该在

我无法使用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]);
    }

});
编辑:有人提到我不应该在数据上循环,而应该在数据上循环。我不熟悉JSON:

for (var i=0, len=data.promos.length; i < len; i++) 
     {
        alert(data.promos[i]);
    }
for(变量i=0,len=data.promos.length;i
数据
是一个对象,只有一个属性(
promos
),而不是数组。你不能绕着它转。(您可以循环查看
数据。促销活动)。

尝试以下操作:

$.each(data.promo, function(key, value) {
        console.log(value.id);
        //and so on...
});

请注意,JSON数据的顶级属性名为
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>

您将json数据视为一个数组,即使顶层是一个对象。你应该在使用数据的地方使用data.promos。这个问题似乎离题了,因为这是提问者没有正确处理其特定数据结构的结果,而不是更普遍的相关问题,并且不包括错误消息或其他实际发生的情况的描述,而不是预期的结果。没有错误。什么都没有发生,也没有出现警告框。你可以发布你的list.php文件代码来提问吗?foreach比传统的for(blabla)简单多了。好吧,现在它可以循环了,但在我尝试获取任何值时显示未定义的值(例如你发布的id),谢谢你的回答。循环正在工作,但是当我尝试将id的值作为value.id(现在使用每个循环,每个promo都是一个值)时,我得到了未定义的值。您能告诉我可能是什么问题吗@quentin@AhmarAli:您正在使用
数据[i].id
?它是
data[i].promo.id
@minitech我正在使用这个$.each(data.promos,function(key,value){console.log(value.id);})@AhmarAli:
console.log(value.promo.id)
<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
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":""}}
]
}