0

我还没有找到处理“php 数组-> 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');

    }
}); 

但显然我遇到的麻烦是它都回显到一个新的<div class="stickit">即“note1”“note2”note3”等 - 每个音符进入一个 div,而不是每个新音符一个新的 div。

当前的想法(失败的想法......)

因此,我试图用 PHP 数组填充 jQuery 数组,以便运行“while”循环客户端以使用该索引的数据在每个索引上创建一个新的 div - 这个过程,但在一个循环中:

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

我曾想象json_encode()过整个 PHP 数组将返回一个对象,jquery 将能够使用其中一个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

您面临的问题是因为您试图在一个响应中传递许多 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 回答