0

私は次の問題を抱えており、誰かが問題の場所を教えてくれることを願っています..

私のフォームには、州、都市、近隣の 3 つの選択オプションがあります。最後の 2 つの選択は、前の 1 つの値に依存します。すべてがうまく機能しますが、新しいオプションを表示するのに 2 秒かかります (前の選択の変更後)。ここでは json が必要ないことは理解しています (右?)。しかし、応答時間を短縮する方法はありますか?

function carga(tipo, valor, selector){
    $.ajax({
        type: 'post',
        url: "include/sel.php",
        data: { tipo: tipo, valor: valor },
        error: function() {
            $(selector).html('<option>Ha ocurrido un error</option>');
      },
        success: function (response) {
            $(selector).html(response);
        }
    })

}

編集:忘れました..私はxamppを使用しています

ここに私のsel.phpがあります

include('dbcs.php');

$i = $_POST['tipo'];
$valor = $_POST['valor'];

switch($i){
case 'provincia':
    $consulta_sql = 'Select * from tbl_zona_provincias';
    break;
case 'partido':
    $consulta_sql = 'Select idPartido, partido from tbl_zona_partidos Where codProvincia = "'.$_POST['valor'].'"';
    break;
case 'localidad':
    $consulta_sql = 'Select idLocalidad, localidad from tbl_zona_localidades Where idPartido = "'.$_POST['valor'].'"';
    break;
}


if(!$resultados = $db->query($consulta_sql)){
die('Se produjo un error al intentar enviar la consulta [' . $db->error . ']');
} else {

while($row = $resultados->fetch_array()){
    if($i == 'provincia'){
        $option = '<option value="'.$row['codProvincia'].'">'.$row['provincia'].'</option>';
    } else if($i == 'partido'){
        $option = '<option value="'.$row['idPartido'].'">'.$row['partido'].'</option>';
    } else {
        $option = '<option value="'.$row['idLocalidad'].'">'.$row['localidad'].'</option>';
    }
    echo $option;   
}
$resultados->free();
}
$db->close();
4

1 に答える 1

0

最初にすべての州、都市、近隣を多次元配列に格納すると、処理時間が短縮されます。配列は次の構造にある可能性があります。

PHPで

$selectOptions = array(
     state_id => array(
          country_id =>array(
               'name'=>country_name,
               'content'=>array(
                      neightborhood_id => neightborhood_name,
                 ),
             ),
           country_id...
        )
    ),
     state_id...
);

そしてあなたのページで

<script ...>
    var selectOptions = <?php echo json_encode($selectOptions)?>;
</script>

次に、状態リストについて、

$('#stateselector').on('change', function() {
    $('#countrySelector').empty();
    $(selectOptions[$(this).val()]).each(function(id, value) {
      $('#countrySelector').append($('<option />').attr('value', id).text(value.name));
    }
}

そして、のリストについては、

$('#countryselector').on('change', function() {
    $('#neightborhoodSelector').empty();
    $(selectOptions[$(stateselector).val()][$(this).val()]).each(function(id, value) {
      $('#neightborhoodSelector').append($('<option />').attr('value', id).text(value));
    }
}
于 2013-03-20T16:27:38.453 に答える