循环JSON(添加HTML)

时间:2014-05-15 19:01:08

标签: php jquery mysql json

我正在尝试从PHP循环JSON输出并为每个索引分配一个列表项。

我有两个不同的问题。

  • 编码在不需要时添加奇怪的斜杠和引号。
  • 在解析JSON字符串时,即使从测试php数组设置,我也会收到类型错误(无效参数)。

PHP

$data= json_encode($stmt->fetchAll(PDO::FETCH_ASSOC));
echo json_encode($data);

JSON

"[
    {\"id\":\"1\",\"user_id\":\"1\",\"message\":\"MSG 1\"},
    {\"id\":\"2\",\"user_id\":\"1\",\"message\":\"MSG 2\"},
    {\"id\":\"3\",\"user_id\":\"1\",\"message\":\"MSG 3 \"},
]"

的jQuery

  $.ajax({ url: 'chat.php',
    dataType: 'json',
    type: 'post',
    error: function(statusCode, errorThrown) {
                updateError(statusCode, errorThrown);
            },
    success: function(data){

         $.each(data, function() {
                $.each(this, function(k, v) {
                    $('<li data-msgid="'+data.id+'">' + data.user_id + '::' + data.message + '</li>').appendTo('#chat_area');
                 });
            });

        }

});

我使用ajax调用而不是json,因为我最终会在同一个函数中传递数据。 非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

您正在编码两次:

$data= json_encode($stmt->fetchAll(PDO::FETCH_ASSOC));
echo json_encode($data);

删除第一个并仅编码最终数据:

$data = $stmt->fetchAll(PDO::FETCH_ASSOC);
...
echo json_encode($data);