繁体   English   中英

如何使用Ajax进程显示来自控制器/模型的数据?

[英]How to display the data came from controller/model using Ajax process?

我在这里有关于ajax的问题​​。 实际上,我是使用Ajax的初学者,所以我无法弄清楚我的问题。 我有一个包含4个选择框的表单。 初始或主要选择框是国家/地区选择器。 其次是州,其次是城市,最后是barangay。 我的目标是这样的。 用户选择自己的国家/地区后,处于状态的第二个选择框将根据用户的国家/地区自动更改。 选择州后,它也会自动更改城市,最后是barangay。 它就像一个动态地址字段。 我正在使用codeigniter。 这就是我所做的。 这是获取状态的过程。

在我的PHP表单中,我有以下内容:

<tr>
    <td><label style="font-weight: normal">State / Province:&nbsp;</label></td>
    <td >
        <select class="form-control" name="c_state" id="c_state">
            <option value="">--Select State--<option>
        </select>
    </td>
</tr>
<tr>
    <td><label style="font-weight: normal">Country:&nbsp;</label></td>
    <td >
        <select class="form-control" name="c_country" id="c_country">
            <option value="">--Select Country--</option>
            <?php
                foreach($countries as $country){
                    if($country['country'] == 'Philippines'){
                        echo "<option value='".$country['code']."'selected='selected'>".$country['country']."</option>";
                    }else{
                        echo "<option value='".$country['code']."'>".$country['country']."</option>";
                    }
                }
            ?>
        </select>
    </td>
</tr>

....

$("#c_country").on('change',function(){

    var c_country = $("#c_country").val();
    var var_country_selection = '<?php echo site_url("alliance_controller/get_provinces/'+c_country+'"); ?>';

    console.log(c_country);

    $.ajax({
        type: 'POST',
        url: var_country_selection,
        data: { id: $(this).val() },
        dataType: 'json',
        success: function(d){
            alert(d['c_country']);
        }
    });

});

在我的控制器中,我有:

public function get_provinces($id){
     $country = $this->alliance_model->hhj_provinces($id);
     echo json_decode($country);
}

在我的模型中,我有这个:

public function hhj_provinces($id) {
     $query = "SELECT * FROM ref_region_province WHERE  country_code = '".$id."'";
     $result = $this->db->query($query);
     echo json_encode($result->result_array());
}

警报中成功的jquery中的输出为“未定义”。 而且我还使用了Chrome中的开发者工具,然后在“网络”标签中查看了该文件,其中显示了我的Ajax的网址以及代码。 但是在我的预览中,我有类似的东西。

[]
No Properties

伙计们。 我只想选择所选国家/地区。

您必须像这样在控制器中返回JSON对象

public function get_provinces(){

 $id = $this->input->post('id');
 $country = $this->alliance_model->hhj_provinces($id);
 $this->output->set_content_type('application/json');
 $this->output->set_output(json_encode( $country));

}

然后在视图中

 $.ajax({
        type: 'POST',
        url: var_country_selection,
        data: { id: $(this).val() },
        dataType: 'json',
        success: function(data){
           $.each(data, function (key, value) {
                     console.log(value.field)

        }
    });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM