好吧,我像这样更改脚本! 为什么它不起作用?!?
演示.php
while($row = mysql_fetch_array($result)){
$array[] = array(
'var1' => $row['var1'],
'var2' => $row['var2'],
'var3' => $row['var3'],
'var4' => $row['var4'],
);
}
print json_encode($array);
演示.js
$.getJSON("demo.php",function(result){
$.each(result, function(i, obj){
$(obj.var1).appendTo('div id="var1"');
$(obj.var2).appendTo('div id="var2"');
$(obj.var3).appendTo('div id="var3"');
$(obj.var4).appendTo('div id="var4"');
});
首先,PHP:
如前所述,数据库连接中的变量不需要引号("
),这是没有意义的。
您还需要在 JSON 编码之前获取所有行。改变:
echo json_encode(mysql_fetch_assoc($result));
自
$return = array();
while ($row = mysql_fetch_assoc($result))
{
$return[] = $row;
}
echo json_encode($return);
这样就返回数据库中的所有行,而不仅仅是第一行。
接下来是你的jQuery:
尝试更改: $('div').html(obj.attribute1+" "+obj.attribute2 ecc...);
至: $(obj.attribute1+" "+obj.attribute2 ecc...).appendTo('div');
或者:$('<div>' + obj.attribute1+" "+obj.attribute2 ecc... + '</div>').appendTo('body');
如果您希望每个对象都位于自己的容器中.
您当前执行此操作的方式只会覆盖页面上每个div 的 HTML,以便div 元素最终仅包含集合中最后一个对象的详细信息.
编辑:
$.getJSON("demo.php",function(result){
var $id = 0;
$.each(result, function(i, obj){
$id ++;
$('<div id="obj' + $id + '"/>').appendTo('body');
$('<span class="var1">' + obj.var1 + '</span>').appendTo('div#obj' + $id);
$('<span class="var2">' + obj.var2 + '</span>').appendTo('div#obj' + $id);
$('<span class="var3">' + obj.var3 + '</span>').appendTo('div#obj' + $id);
$('<span class="var4">' + obj.var4 + '</span>').appendTo('div#obj' + $id);
});
});
编辑 2:
如果你试图将所有元素中的每个"varX"都放到一个div中,那么只需定义四个div(<div id="var1"/>
,<div id="var2"/>
,...
),然后使用以下代码:
$.getJSON("demo.php",function(result){
$.each(result, function(i, obj){
$(obj.var1).appendTo('div#var1');
$(obj.var2).appendTo('div#var2');
$(obj.var3).appendTo('div#var3');
$(obj.var4).appendTo('div#var4');
});
});