我需要在.php脚本(AJAX文件)中返回一个数据库表。我目前有这个:
header('Content-type: application/json; charset=UTF-8');
$gettblstmt = $pdo->prepare('SELECT *
FROM `tbl1`
ORDER BY `ordernum`');
$gettblstmt->execute();
$tbl= $gettblstmt->fetchAll(PDO::FETCH_ASSOC);
echo json_encode($tbl);
现在,我正在使用$.post
中的jQuery
功能来运行' PHP脚本。但是,由于AJAX文件的结果是一个对象,ORDER BY
不会被应用。
我怎样才能从MySQL获得正确的jQuery排序?
$.post('someajaxfile.php', function(result)
{
for (var i = 0; i < result.length; i++)
{
$('#someelement').append(result[i] + '<br>');
}
});
答案 0 :(得分:0)
当PDO查询被抛回客户端时,实际上会保留PDO查询中的数据“顺序”。当数据编码为JSON时,仍然会根据从查询中检索的数组顺序对对象或项进行排序。
您可以采取哪些措施来改变排序?
header('Content-type: application/json; charset=UTF-8');
$gettblstmt = $pdo->prepare('SELECT *
FROM `tbl1`
ORDER BY `ordernum`');
$gettblstmt->execute();
$tbl= $gettblstmt->fetchAll(PDO::FETCH_ASSOC);
echo json_encode($tbl);
首先,ORDER BY ordernum
可以接受ORDER BY ordernum DESC
或ORDER BY ordernum ASC
,具体取决于您的要求。
其次,在客户端的代码或您的jQuery代码中。您可以更改添加项目的方法。
来自追加:
$('#someelement').append(result[i] + '<br>');
您可以更改为前置:
$('#someelement').prepend(result[i] + '<br>');
注意:在您的示例代码中,您将附加整个对象,而不是JSON中的单个项目。您没有在追加内部使用i
变量。因此,在您当前的代码中,您可能会看到[object Object]
。