我是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,这与预期的一样有效。