0

'phparray->jQuery'の問題のこちら側を扱うチュートリアル/説明が見つかりません。(または私が理解しているもの、私はこれすべてに不慣れです:S)

コードは機能しますが、n個のノートに対してn個のdivを作成しません

私はPHPファイルでSQLを使用しています:

$sql = "SELECT * FROM notes WHERE username = '$uname' and notetype = 'todo'";
$result = mysql_query($sql,$conn);
$i = 0;
while($row = mysql_fetch_assoc($result))
{
    $notes[$i] = $row['note'];
    echo json_encode($notes[$i]);
    $i += 1;        

}

これは、Ajaxを介してdiv / DOM(!?)要素に正常にエコーします。

$.ajax({
    url:'getnotestodo.php',
    data: "",
    datatype: 'json',       
    success: function(data)
    {
        $('<div class="stickit" />').text(data).appendTo('#stickitholder');

    }
}); 

しかし、明らかに私が抱えている問題は、すべてが1つの新しい、<div class="stickit">つまり「note1」、「note2」、「note3」などにエコーされることです。つまり、新しいノートごとに1つの新しいdivではなく、すべてのノートが1つのdivにエコーされます。

現在の思考(失敗した思考...)

そこで、「while」ループのクライアント側を実行して、そのインデックスのデータを使用して各インデックスに新しいdivを作成するために、jQuery配列にPHP配列を設定しようとしています。このプロセスですが、ループ内にあります。

$('<div class="stickit" />').text(data).appendTo('#stickitholder'); 

PHP配列全体で、jqueryが型関数json_encode()の1つを使用できるオブジェクトを返すことを想像していました。map()しかし、ひどいスクリプトの失敗がひどいトラブルシューティングの試みとクラッシュにつながり、完全に行き止まりになっています。

PHP:

$sql = "SELECT * FROM notes WHERE username = '$uname' and notetype = 'todo'";
$result = mysql_query($sql,$conn);
$i = 0;
while($row = mysql_fetch_assoc($result))
{
    $notes[$i] = $row['note'];          
    $i += 1;        
}
json_encode($notes[]);

わずかに異なるjQuery:

$.ajax({
    url:'getnotestodo.php',
    data: "",
    datatype: 'json',       
    success: function(data)
    {
        $('<div class="stickit" />').text(data).appendTo('#stickitholder');
              var notesarray = new Array();
              notesarray = data;
              while (notesarray.length >= 0){
                  $('<div class="stickit" />').text(data).appendTo('#stickitholder');
              }
    }
});

私は行くにつれて学んでいますが、今はどこにも行かないので、助けていただければ幸いです。

4

1 に答える 1

0

あなたが直面している問題は、1つの応答で多くのjsonオブジェクトを渡そうとしているためです。そのため、javascriptはそれをjsonオブジェクトとして認識できません。オブジェクトは次のようになります

[1,2,3][2,3,1]

今、あなたはそれを正しくやっています(少し)あなたはこのようなあなたのdivを持つことができます。

<div id="appendMe">
</div>

<script>
  $.ajax({
    url:'getnotestodo.php',
    data: "",
    datatype: 'json',       
    success: function(data)
    {
      jquery.each(data,function(index,val){
          $('#appendMe').append("<div class='stickit'>"+val+"</div>");
    }
});

</script>

PHPコードで、この行をjson_encode($ notes [])からjson_encode($ notes)に変更します。

于 2011-12-18T00:29:53.610 に答える