0

ほとんどの連鎖選択は JSON で実現されているようですが、残念ながら、これを実現するにはデータベースを使用する方がはるかに便利です。ほぼそこにあるのですが、何らかの理由で 2 番目の選択ボックスが正しく読み込まれていません。代わりに、そのページの HTML 全体をロードしていますが、その理由はわかりません。

これが私が得たものです(make_list()とmodel_list()は、それぞれの基準に適した配列を返す、以前に作成した関数であることに注意してください)

JS:

$(document).ready(function(){
    $("select#type").attr("disabled","disabled");
    $("select#category").change(function(){
        $("select#type").attr("disabled","disabled");
        $("select#type").html("<option>loading...</option>");
        var id = $("select#category option:selected").attr('value');
        $.post("select_type.php", {id:id}, function(data){
            $("select#type").removeAttr("disabled");
            $("select#type").html(data);
        });
    });
    $("form#select_form").submit(function(){
        var cat = $("select#category option:selected").attr('value');
        var type = $("select#type option:selected").attr('value');
        if(cat>0 && type>0)
        {
            var result = $("select#type option:selected").html();
            $("#result").html('your choice: '+result);
        }
        else
        {
            $("#result").html("you must choose two options!");
        }
        return false;
    });
});

HTML/PHP:

<form id="select_form">
  <div class="clearfix">
    <select id="category">
        <option value="">Any</option>
        <?php foreach ( make_list() as $make ) { ?>
          <option value="<?php echo $make ?>"><?php echo $make ?></option>
        <?php } ?>
      </select>
    </div>

    <div class="clearfix">
      <select id="type">
        <option value="">Any</option>
      </select>
  </div>
</form>

最初の選択が変更されると、JQuery は同じフォルダー内の「select_type.php」というファイルを参照する必要があります。そのファイルの内容は次のとおりです(奇妙なことに、JSで作成されているにもかかわらず、 $_POST['id'] もこのファイルに追加されていないようです):

foreach ( model_list($_POST['id']) as $model ) {
    echo '<option value="'.$model.'">'.$model.'</option>';
}

私はこのプロジェクトのためにこのリソースを使用してきました: http://www.yourinspirationweb.com/en/how-to-create-chained-select-with-php-and-jquery/残念ながら、データはその 2 番目の選択ボックスに読み込まれていないようです。

ご覧いただきありがとうございます。

4

1 に答える 1

0

さて、私はこれを理解しました。うまくいけば、これは将来同じ問題を抱えている人に役立ちます。

ファイル select_type.php への呼び出しが正しくありませんでした。呼び出しは、相対ではなく絶対でなければなりません。私はワードプレスを使用しているので、単に行を次のように変更しました。

$.get("<?php echo get_template_directory_uri() . '/includes/select-model.php'; ?>", {id:id}, function(data){

$.post を $.get に変更したことに気付くでしょう。post が機能しなかった理由はわかりませんが、get は正常に機能しているようです。$_GET['id'] を使用して select_type.php の値を取得しているだけです。

これが誰かを助けることを願っています!

于 2013-08-20T16:58:16.160 に答える