我是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
作为value
,block 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']));
});
},
});
}