嗨,伙计们,我有这个代码
$Sql = "SELECT * FROM tabmakes
WHERE Type_Id = '1'
ORDER BY Make_Name Asc";
$Query = mysql_query($Sql,$Conn) or die(mysql_error($Conn));
$marcas = array();
while ($Rs = mysql_fetch_array($Query)) {
$marcas[ $Rs['Marca_Id'] ] = $Rs['Marca_Nome'];
}
asort($marcas); // tried using asort only works on firefox
echo ( json_encode($marcas) );
这是我的jQuery
$("#div-test-1").change(function(){
var tmpTipo = $(".buscaMarcas").val();
$.getJSON("/php/getMakes.php",{tipo: tmpTipo, marca: $(this).val()}, function(resposta){
if(resposta === null){
var options = '<option value="">-</option>';
}
else{
var options = '<option value="">-</option>';
$.each(resposta, function(key, val) {
options += '<option value="' + key + '">' + val + '</option>';
});
}
$("select.recebeModelos").html(options);
$("select.recebeEstilos").html('<option value="">-</option>');
});
});
json 输出按 NAME 排序,但选择时填充所有信息,值按 ID 排序。
那么我如何获得结果并按名称排序显示选择。
谢谢。
你正在用 PHP 构建一个数组。即使你根据 PHP 的结果以 NAME 顺序构建它,当 PHP 开始 json 转换过程时,它也会以数字键顺序构建它。然后,您还可以通过运行数组来强制执行该数字键顺序 asort()
。
解决方法是更改数组的构建方式:
$data = array();
while($row = mysql_fetch_assoc($result)) {
$data[] = array('id' => $row['id'], 'name' => $row['name'])
}
当然,这需要更改JS代码来处理新结构,但这将保留名称排序。