使用jQuery获取JSON对象的数据


Using jQuery to get the data of a JSON Object

我是jQuery和JSON的新手。我有以下PHP代码(getData.PHP)从数据库执行查询:

<?php
     header('Content-Type: application/json');
     ....
     // some code here
     ....
     $my_arr=array();
     // fectching data into array
     while($info = mysqli_fetch_array($result))
     {
       // convert to integer value if there is a bug after passing json_encode
       $rev=intval($info['bIRevNum']);
       $name=$info['bIName'];
       echo "<tr>";
       echo "<td>" . $info['bName'] . "</td>";
       echo "<td>" . $info['bRevNum'] . "</td>";
       echo "<td>" . $info['bIName'] . "</td>";
       echo "<td>" . $info['bIRevNum'] . "</td>";
       $my_arr[]=array('br'=>$name,'rev'=>$rev);
       echo "<td>" . $info['pName'] . "</td>";
       echo "<td>" . $info['pRevNum'] . "</td>";
       echo "</tr>";
     }
     // json encode
     echo json_encode($my_arr);
?>

在这里使用echo"json_encode"后,我可以看到这种格式的json对象我页面上的[{"br":"itemsb1","rev":37},{"br":"itemb2","rev":45}]

现在,我想访问对象(37和45)的rev元素的整数,以便jQuery在另一个PHP文件中将来使用,我们将其称为index.php,并使用以下脚本

<html>
.....
<script>
   $(document).ready(function(){
       $("button").click(function(){
           $.getJSON("getData.php", function(obj) {
             $.each(obj, function(key, value){
                    $("#div1").append("<li>"+value.rev+"</li>");
         });
       });
   });
    });
</script>   
...
// test here
<!---jquery--->
<div id="div1"><h2>CHANGE >>>> ....!!!!</h2></div>
<button>Calling from different PHP file</button>
</html>

如果它是正确的,当我点击"从不同的PHP文件调用"按钮时,JSON对象的值应该显示为37,45。

我尝试了很多方法,但它在我的页面上没有显示任何内容。

请帮帮我!

您的问题似乎是在回声html和JSON。尝试从的这些线路中去除"回声"

echo "<tr>";
echo "<td>" . $info['bName'] . "</td>";
echo "<td>" . $info['bRevNum'] . "</td>";
echo "<td>" . $info['bIName'] . "</td>";
echo "<td>" . $info['bIRevNum'] . "</td>";
echo "<td>" . $info['pName'] . "</td>";
echo "<td>" . $info['pRevNum'] . "</td>";
echo "</tr>";

请勿删除此行:

$my_arr[]=array('br'=>$name,'rev'=>$rev);

还要确保您的javascript语法正确

$("button").click(function(){
   $.getJSON("getData.php", function(obj) {
        $.each(obj, function(key, value) {
            $("#div1").append("<li>"+value.rev+"</li>");
        });
    });
});

确保从getData.php返回的唯一内容是JSON格式的;否则,它将无法正确解析。如果你直接在浏览器中访问getData.php,你应该只看到JSON内容,而不会看到其他内容(包括错误、警告等);因此,问题必须是PHP脚本返回的任何内容。我刚刚用这个PHP创建了一个琐碎的测试用例:

<?php
    header('Content-type: application/json');
    $my_arr[]=array('br'=>'something','rev'=>'2.0.5');
    echo json_encode($my_arr);
?>

使用您提供的确切HTML,这与预期的一样有效。