Codeigniter Jquery Ajax:如何将返回的数据循环为 html


Codeigniter Jquery Ajax: How to loop returned data as html

我是JQuery AJAX的新手,这是我的脚本:

$(document).ready(function() {
  $("#city").change(function() {
    var city_id = $("#city").val();
    if (city_id != '') {
      $.ajax({
        type: "POST",
        url: "<?php echo base_url() ?>index.php/home/get_block_by_id/" + city_id,
        success: function(block_list) {
          // WHAT TO PUT HERE ?
        },
      });
    }
});

如果我输入 console.log(block_list),它会返回具有 JSON 类型的正确数据:

[{"id":"1601","id_city":"16","block":"A"},
{"id":"1602","id_city":"16","block":"B"}]

循环返回数据的正确方法是什么?我这样做是为了查看循环返回的内容:

$.each(block_list, function() {
  $.each(this, function(index, val) {
    console.log(index + '=' + val);
  });
});

但是:(完全搞砸了,如果循环数据正确,我还想将id作为valueblock name作为我的<option>标签的text,该怎么做?谢谢。

更新

抱歉,我已经尝试了两个答案,但它不起作用,我尝试将我的代码更改为:

$("#city").change(function(){
        var city_id = $("#city").val();
        $.get("<?php echo base_url() ?>index.php/home/get_block_by_id/" + city_id, function(data) {
          $.each(data, function(id, val) {
            console.log(val.id);
          });
        });
      });

它返回:

**UNDEFINED**

我也尝试将其更改为val[id]或仍然不起作用val['id'],帮助:(

$.each(block_list, function(id, block){
    console.log('<option value="' + block['id'] + '">' + block['block'] + '</option>')
});

输出将是:

<option value="1601">A</option>
<option value="1602">B</option>

尝试如下操作:

success: function(data, textStatus, jqXHR) {
    if (typeof(data)=='object'){
          for (var i = 0; i < data.length; i++) {
            console.log(data[i].id + ':' + data[i].id_city);
           }
    }
}

如果您的 JSON 输出采用此格式

[{"id":"1601","id_city":"16","block":"A"},
{"id":"1602","id_city":"16","block":"B"}]

然后

var city_id = $("#city").val();
if (city_id != '') {
  $.ajax({
    type: "POST",
    url: "<?php echo base_url() ?>index.php/home/get_block_by_id/" + city_id,
    success: function(data) {
            $.each(data, function(index) 
            {
                console.log(data[index]['id']);
                $('#'+ddname+'')
                .append($("<option></option>")
                .text(data[index]['id']+"-"+data[index]['block']));
            });
    },
  });
}