AJAX MySQL查询排序

时间:2015-11-24 08:12:31

标签: mysql

我需要在.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>');
    }
});

1 个答案:

答案 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 DESCORDER BY ordernum ASC,具体取决于您的要求。

其次,在客户端的代码或您的jQuery代码中。您可以更改添加项目的方法。

来自追加:

$('#someelement').append(result[i] + '<br>');

您可以更改为前置:

$('#someelement').prepend(result[i] + '<br>');

注意:在您的示例代码中,您将附加整个对象,而不是JSON中的单个项目。您没有在追加内部使用i变量。因此,在您当前的代码中,您可能会看到[object Object]