编辑:使用以下删除建议解决:echo '{"results":'.json_encode($arr).'}';
并替换为echo json_encode($arr);
这与更换这些线路相结合:
var items = [];
$.each(data, function(key, val) {
$.each(val, function(key, val)
{
//Test insert into box using customer number
$("#chatbox").html(val.number);
});
});
带有
$.each(data, function(key, val) {
$("#chatbox").html(this.number);
});
让它工作起来,我现在可以使用this
和我想要的属性来访问对象数据。
结束编辑
嗨,有人能帮我处理这些JSON提要吗。我几乎做到了(我想(,但每当我把这个提要放入JQuery时,它都会把我们作为一个字符串而不是一个JSON对象数组,我不知道为什么。
创建提要的PHP:
<?php
session_start();
include 'connect.php';
$number = $_SESSION['number'];
$query = "SELECT * FROM $tableName WHERE number='$number'";
$result = mysql_query($query, $sqlCon);
$arr = array();
while($obj = mysql_fetch_object($result)) {
$arr[] = $obj;
}
if (count($arr) == 0)
{
echo "Your reference number is: $number";
} else {
echo '{"results":'.json_encode($arr).'}';
}
?>
返回的JSON如下所示:
{"results":[{"id":"40","number":"466741","message":"dsfdsv","date":"2011-10-05","time":"00:28:32"},{"id":"41","number":"466741","message":"sacsac","date":"2011-10-05","time":"00:30:17"}]}
我想要的是:
[{"id":"40","number":"466741","message":"dsfdsv","date":"2011-10-05","time":"00:28:32"},{"id":"41","number":"466741","message":"sacsac","date":"2011-10-05","time":"00:30:17"}]
或者一个返回值,它将允许我对对象进行迭代。
我正在阅读的JQuery:
$.getJSON('get.php', function(data) {
var items = [];
$.each(data, function(key, val) {
$.each(val, function(key, val)
{
//Test insert into box using customer number
$("#chatbox").html(val.number);
});
});
});
我想我的问题是我创建JSON提要的方式,但我只是被卡住了,不知道如何修复它。
任何帮助都将不胜感激,谢谢。
您应该从PHP设置头,以指定它是json内容。这不是100%必需的,但这是一个很好的实践,您将在firebug等工具中看到正确解析的内容类型。
header('Content-type: application/json');
您正在用一个结果键包装json内容,而您没有在javascript中查找该结果键,因此您要么需要删除该部分,要么在javascript中寻找该部分。既然您说您想要的是数组,而不是具有结果键/值的对象,那么只需将echo '{"results":'.json_encode($arr).'}';
替换为echo json_encode($arr);