【问题标题】:JSON not fetching success on codeigniter - [object Object]JSON 未在 codeigniter 上获取成功 - [object Object]
【发布时间】:2014-01-15 05:28:57
【问题描述】:

我在这里尝试使用 json 格式从第一个选择中填充第二个选择。

一切顺利,我得到了我需要的结果,我根据我随请求发送的 ID 从模型中获得了确切的行数,但我有这个错误:

我正在尝试根据我在数据库中选择的模型获取标记 ID:

ID MARK_ID VALUE_MARK

这是我的 jquery 函数:

$(document).ready(function(){
$("#mark").change(function() {
   var markId= $("#mark").val();
   if (markId!= "") {
     $.get(
    'upload/car_models?mark_id=' + markId,
    function(data){                     
        $.each(data, function(key, value){
               $("#model").append("<option value='" + key + "'>" + value + "</option>");
        })
    },
    "json"
);
   }
});
})

在我的控制器中,我正在对从模型返回的变量进行这样的 json 编码

echo json_encode($models);

我怎样才能解决对象对象的这个问题。 谢谢。任何帮助将不胜感激。 编辑: Json结构:

[{"id":"50","mark_id":"50","value_mark":"Refine","value":"JAC"},     {"id":"50","mark_id":"50","value_mark":"Rein","value":"JAC"}]

这是我的 json 结构。 id mark_id value_mark 这里有2行从模型返回

【问题讨论】:

  • 提供你的json结构???
  • [{"id":"50","mark_id":"50","value_mark":"Refine","value":"JAC"},{"id":"50 ","mark_id":"50","value_mark":"Rein","value":"JAC"}] 这是我的 json 结构。 id mark_id value_mark 这里有2行从模型返回

标签: php jquery json codeigniter


【解决方案1】:

试试这个,

$(document).ready(function(){
    $("#mark").change(function() {
        var markId= $("#mark").val();
        if (markId!= "") {
            $.get(
                'upload/car_models?mark_id=' + markId,
                function(data){   
                    var model=$("#model");
                    model.empty();
                    $.each(data, function(key, val){
                        model.append("<option value='" + val.value + "'>" + val.value_mark + "</option>");
                    });
                },
                "json"
                );
        }
    });
})

【讨论】:

    【解决方案2】:

    您的数据是一个对象数组。当您使用$.each 循环该数组时,key 将成为索引,value 将成为该索引处的对象。

    试试:

    $.each(data, function(i, obj){
          $("#model").append("<option value='" + obj.value + "'>" + obj.value_mark + "</option>");
     });
    

    我猜到了您要分配给&lt;option&gt; 值和文本的属性

    【讨论】:

    • 这很好用。 But when select ex.列出了所有奥迪车型,但如果我选择沃尔沃,奥迪车型仍然存在 + 沃尔沃车型在上方添加。我该如何解决这个问题
    • 在每个循环之前,使用$("#model").empty()删除旧的
    • 感谢 charlietfl 现在效果很好。我会稍微调整一下。但是我需要对每个数据函数中的 i, obj 进行一些解释,这意味着什么以及它如何解决了我的问题。再次感谢
    • 循环数组时$.each的第一个参数是index,第二个是数组元素。可以随意命名这些参数,我只是使用i 来表示indexobj,因为数组元素是一个对象,而不是字符串或数字等
    • 如果你用 $.each 循环一个对象,第一个参数是属性键,第二个是那个键的值
    猜你喜欢
    • 2012-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-13
    • 2014-09-13
    • 1970-01-01
    • 2011-05-25
    • 1970-01-01
    相关资源
    最近更新 更多