大家好我有这个代码
$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排序的,但是当get填充所有信息时,这些值按ID排序。
所以我如何得到结果并在NAME命令的选择上显示。
感谢。
答案 0 :(得分:0)
您正在使用PHP构建数组。即使你是根据PHP的内容以NAME顺序构建它,当PHP启动json转换过程时,它将按数字键顺序构建它。然后,您还可以通过asort()
运行数组来强制执行该数字键顺序。
解决这个问题的方法是改变数组的构建方式:
$data = array();
while($row = mysql_fetch_assoc($result)) {
$data[] = array('id' => $row['id'], 'name' => $row['name'])
}
当然,这需要更改JS代码来处理新结构,但这将保留名称顺序。