0

さて、私はこのようにスクリプトを変更します! なぜそれが機能しないのですか?!?

デモ.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"');
});
4

1 に答える 1

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

To:$(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に取得しようとしている場合は、4つの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');
    });
});
于 2012-05-08T12:30:14.847 に答える