我有一个从我的CodeIgniter生成的JSON对象
function getListLotJSON($projectId){
$lotList = $this->reservationmodel->getListLot($projectId);
if($lotList){
$this->output
->set_content_type('application/json')
->set_output(json_encode($lotList));
}
else{
//do nothing
}
}
返回:
[{"LotId":"3","LotName":"1"},{"LotId":"4","LotName":"2"}]
然后在我的AJAX中:
$(function(){
$("#ProjectName").change(function(){
var projectId = $("#ProjectName").val();
$.ajax({
async: false,
type: 'POST',
url: 'http://localhost:81/ORPS/reservation/getListLotJSON/' + projectId,
dataType: 'json',
contentType: 'application/json; charset=utf-8',
error: function(result){
alert('No Available Lot!');
},
success: function(response){
$("#LotName").append($("<option>").val("").text("--Loading List of Lots Available--"));
var lotDetails = response;
console.log(lotDetails);
$("#LotName > option").remove();
$("LotName").append($("<option/>").val("").text("--Lot--"));
$("#LotName > option").remove();
$.each(lotDetails, function(){
$("#LotName").append('<option value='+lotDetails['LotId']+'>'+lotDetails['LotName']+'</option>');
});
}
});
});
});
我想将LotName附加为和LotId中的文本作为值。如何显示特定数据?
顺便说一句,这就是console.log(lotDetails)给出的:[Object {LotId =“3”,LotName =“1”},Object {LotId =“4”,LotName =“2”}] < / p>
它只是在。
中显示UNDEFINED请帮忙。非常感谢!
答案 0 :(得分:1)
在你的每一个中你都在访问原始数组。
尝试使用以下内容:
$.each(lotDetails, function(index, lotDetail){
$("#LotName").append('<option value='+lotDetail['LotId']+'>'+lotDetail['LotName']+'</option>');
});
我已将lotDetail参数传递给每个annonymus函数。现在,您可以单独访问每个数组元素。
正如您在官方jQuery文档中看到的那样:http://api.jquery.com/jquery.each/
$.each([ 52, 97 ], function( index, value ) {
alert( index + ": " + value );
});
第一个是指数,第二个是价值。
希望这有帮助。 让我知道!
干杯
答案 1 :(得分:1)
您的for循环不正确:
$.each(lotDetails, function(key, value){
$("#LotName").append('<option value='+value.LotId+'>'+value.LotName+'</option>');
});
您正在访问主lotDetails数组。其中没有属性LotName。你需要里面的物品。所以你循环,并在函数中你有2个参数,键(在这种情况下是索引)和值。里面的对象。