gpt4 book ai didi

javascript - Jquery ajax返回排序的数据

转载 作者:行者123 更新时间:2023-11-29 20:16:17 33 4
gpt4 key购买 nike

我有一个从数据库中获取数据的 php 脚本,结果集以特定的顺序返回,例如

姓名:John,年龄:21,地址:1234 Fifth Ave.

我在调试时验证了顺序。然后将结果集插入一个数组,然后将其编码为 json 对象并通过 AJAX 请求传递到我的 jquery 脚本。

var resultSet = [];
$.ajax({
async: false,
url: 'scripts/getData.php,
dataType: "json",
success: function(data) {
/* Store the pieces of the array */
resultSet = data["php_resultSet"]; //<--Breakpoint here shows the resultSet sorted, if order is preserved here, my problem will be solved.
}
});

但是,当我取回数据并分析数组时,它已排序,例如

地址:1234 Fifth Ave.,年龄:21,姓名:John 年龄:21

我想保留原始结果集的顺序,是否有我必须设置的选项才能做到这一点?感谢您的帮助。

更新:

这是构建数组并对其进行编码的 PHP 代码片段

    $data = array ( "otherData" => array(), "php_resultSet" => array() );

while ( $row = sqlsrv_fetch_array ( $stmt, SQLSRV_FETCH_ASSOC ) ) {
//Push the entire row to the result set array
array_push ( $data["php_resultSet"], $row );
}

asort($someData);

foreach ( $someData as $key) {
array_push ( $data["otherData"], $key );
}

return json_encode($data);//<--At this point, even though the I sorted $someData before pushing it to the $data, the php_resultSet maintains its sorted order.

最佳答案

将散列(关联数组)编码为 JSON 时,由于散列在源语言中的表示方式不同,因此不能保证保留键/值对的顺序。例如,Perl 中的散列以牺牲字段顺序为代价优化存储要求的方式存储。

话虽如此,您可以采用多种方法让 JavaScript 重新排序 AJAX 结果,其中一种方法是返回结果以及预期的呈现顺序,如:

{
"presentation_order": [
"Name",
"Address",
etc.
],
"records": [
{"Name":"Juan", etc.},
etc.
]
}

然后使用它在填充预期记录出现的表之前或期间对记录重新排序。

另一种方法可能是为每条记录中的每个字段名称附加一个值,该值可用于在检索后对它们进行排序,然后在显示之前从字段名称中删除排序值。

因此在将结果转换为 JSON 后在服务器上,为第一个字段名添加前缀“aa_”,将每个后续字段名的前缀递增到“zz_”。因此,如果前两个字段名称是“Name”和“Address”,则变为“aa_Name”和“ab_Address”。

然后在将记录添加到客户端的表之前,按字段名对字段进行排序,然后使用 fieldName=fieldName.substring(3) 删除前缀。

关于javascript - Jquery ajax返回排序的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6551949/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com