【发布时间】:2014-05-15 19:01:08
【问题描述】:
我正在尝试遍历 PHP 的 JSON 输出并为每个索引分配一个列表项。
我有两个不同的问题。
- 编码会在不需要时添加奇怪的斜杠和引号。
- 即使从测试 php 数组设置,解析 JSON 字符串时也会出现类型错误(无效参数)。
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,因为我最终将在同一个函数中传递数据。 非常感谢任何帮助。
【问题讨论】:
-
由于 JSON 使用双引号来包含字符串,因此需要使用反斜杠来转义双引号。如果需要,您可以替换它们,但在我看来,这就是将字符串插入数据库的方式
-
字符串不包含数据库中的引号。其他 json 调用正在正确输出,但是,它们是输出中的单个索引。