数组类型数据从ajax返回不工作的CI

时间:2017-08-25 19:02:27

标签: php jquery ajax

我的系统中集成了一个汽车数据库,现在让我给你看一下代码

AJAX

$('#year').change(function() {

        $year=$("#year option:selected").text();
        $('#make').html("");
        $('#model').html("");

        var obj={
            year:$year
        };

        $.ajax({
            type: 'post',
            url: '<?=base_url()?>Home/ajax_search_step1',
            dataType: 'json',
            data:obj,

            success: function (data) {
                $data=JSON.stringify(data);
                //alert("here");
                $.each(data, function(key, value) {
                    //var append='<option value='+value.id+'>'+value.name+'</option>';
                    alert(value.model_make_id);
                });
            }
        });
});

发生的事情是将一年作为参数传递给控制器​​

MODEL

function ajax_search_step1($year){
        $query="SELECT DISTINCT model_make_id FROM `tbl_02_models`";
        $this->db->where("model_year" ,$year);
        $query=$this->db->query($query);
        return $query->result_array();
    }

控制器

public function ajax_search_step1()
    {
        $year=$this->input->post("year");
        $data['result']=$this->Car_search->ajax_search_step1($year);
        echo json_encode($data ,JSON_PRETTY_PRINT);
        exit();
    }

这就是php返回响应的方式!

    {
        "result": [
            {
                "model_make_id": "abarth"
            },
            {
                "model_make_id": "ac"
            },
            {
                "model_make_id": "acura"
            },
            {
                "model_make_id": "Alfa Romeo"
            },
            {
                "model_make_id": "alfa-romeo"
            }
    ]
}

现在问题是我无法在javascript中打印对象我尝试了许多不同的解决方案,但它们都没有为我工作!

2 个答案:

答案 0 :(得分:1)

请尝试以下代码。

您在data.result

中遗漏了each

&#13;
&#13;
var data = {"result": [{"model_make_id": "abarth"},{"model_make_id": "ac"},{"model_make_id": "acura"},{"model_make_id": "Alfa Romeo"},{"model_make_id": "alfa-romeo"}]};
     $.each(data.result, function(key, value) {
                    //var append='<option value='+value.id+'>'+value.name+'</option>';
                    alert(value.model_make_id);
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

您无法将$.each用于string data type

$('#year').change(function() {

        $year=$("#year option:selected").text();
        $('#make').html("");
        $('#model').html("");

        var obj={
            year:$year
        };

        $.ajax({
            type: 'post',
            url: '<?=base_url()?>Home/ajax_search_step1',
            dataType: 'json',
            data:obj,

            success: function (data) {

$data=JSON.parse(data);
$.each(data.results, function(key,  value) {
 //var append='<option value='+value.id+'>'+value.name+'</option>';
 alert(value.model_make_id);
                 });
                }
          });
    });

尝试使用此

替换您的代码