2012-05-08 36 views
0

好吧,我改变这样的脚本!为什么它不工作?!?getJSON + json_encode +查询php

demo.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); 

demo.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"'); 
}); 
+2

什么意思通过学习'在M任何单个属性y html page' – mgraph

+0

你为什么要引用你的变量?这是没有意义的。 – ThiefMaster

+0

我希望这可以帮助你http://api.jquery.com/jQuery.getJSON/ –

回答

2

首先,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 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'); 
    }); 
}); 
+0

你能看到我已经做的新的编辑吗?谢谢 –

+0

检查编辑新解决方案。它不起作用的原因是因为你是: 1.尝试使用无效语法引用'div'。 2.试图在它们存在之前引用'div's。你错过了为你$ .each结尾的外壳。 –

+0

@KristianWilliams为了让您的个人资料合并,请编辑每个人说“合并我”以确认您的所有权,然后[联系我们](http://stackoverflow.com/contact)。谢谢! –