0

ドロップダウンフォームにこのコードがあり、正常に機能しました

<?php echo form_label('Model: ', 'model'); ?>
<?php echo form_dropdown('model', $model_dropdown, '', set_value('model', '', 'id="model"')); ?>

<?php echo form_label('Make: ', 'make'); ?>
<?php echo form_dropdown('make', $make_dropdown, '', set_value('make', '', 'id="make"')); ?>

しかし、動的ドロップダウンのためにjqueryで拡張したかったので、これに変更しました

<label for="make">Make: </label>
<?php echo form_dropdown('id', $make_dropdown, '', 'id="make"'); ?><br /></td>

<?php $models['#'] = 'Please Select'; ?>
<label for="model">Model: </label>
<?php echo form_dropdown('model_id', $models, '', 'id="models"'); ?><br /></td>

jsの場合はこれで

    $(document).ready(function(){
    $('#make').change(function(){
        $("#models > option").remove();
        var id = $('#make').val();
        $.ajax({
            type: "POST",
            url: "site/get_models/"+id,
            datatype : "json",

            success: function(models)            {
                $.each(models,function(id,model)
                {
                    var opt = $('<option />');
                    opt.val(id);
                    opt.text(model);
                    $('#models').append(opt);
                });
            }

        });

    });
});

しかし、現在、値は送信されていませんが、IDは送信されています。これは、コードを見るときに意味があります。これを修正するには何を更新する必要がありますか?

ありがとう

編集:[メーカーとモデル]ドロップダウンのIDは挿入されているものです。代わりに、jqueryを追加する前の動作のように値が必要です。

たとえば、makeドロップダウンにはHPまたはDellが含まれ、モデルにはモデルが含まれます。送信すると、これらの値が挿入されますが、代わりにIDを取得するだけです...

4

1 に答える 1

0

変更してみてください:

opt.val(id);

opt.val(model);

更新:わかりました。これは1つのデータ構造タイプで機能します。次のようなことができる戻り値の型を定義することをお勧めします。

->ajaxリクエストからの"successData"= {"type": "model"、 "id": "12345"、 "model":"クールなモデル"}

そしてあなたの成功ハンドルは次のようなことをすることができます:

    success: function(successData){

        if(successData.type === "model"){
          //do your loop to create the models markup
        else{
           //we have "make" data, handle that here..
        }
    }
于 2012-06-19T03:01:43.040 に答える