2012-05-08 37 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)。謝謝! –