0

こんにちは、私はこのコードを持っています

$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 順に並べられます。

では、どのようにして結果を取得し、名前順に並べ替えて表示することができますか。

ありがとう。

4

1 に答える 1

0

PHPで配列を構築しています。PHPから出てきたものをもとに名前順にビルドしていても、PHPがjson変換処理を開始するときは数値キー順にビルドしていきます。次に、 を介して配列を実行することによって、キーの数値順序も強制しますasort()

これを回避する 1 つの方法は、配列の構築方法を変更することです。

$data = array();
while($row = mysql_fetch_assoc($result)) {
   $data[] = array('id' => $row['id'], 'name' => $row['name'])
}

もちろん、新しい構造を処理するために JS コードを変更する必要がありますが、これにより名前の順序が維持されます。

于 2012-05-02T21:19:43.300 に答える