2015-11-24 75 views
0

我需要在.php脚本(AJAX文件)中返回一个数据库表。目前,我有这样的:AJAX MySQL Query Order by

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到MySQL正确的顺序?

$.post('someajaxfile.php', function(result) 
{ 
    for (var i = 0; i < result.length; i++) 
    { 
     $('#someelement').append(result[i] + '<br>'); 
    } 
}); 
+0

javascript代码在哪里? –

+0

由于您提到AJAX – vincent

+1

,请完成客户端到服务器的片段json_encode不会更改排序。如果结果来自mysql命令(这似乎是这种情况),那么这个排序将被保存在json对象中 –

回答

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的indiviual项目。您没有在追加内使用i变量。因此,在您当前的代码中,您可能会看到[object Object]

+0

我犯了一个错误 - 它还早,我有点困 - 所以我忘了'[ 1]'。但是我没有明白你的意思:从你发布的内容看,这和我现在的一样, –