Jquery AJAX解析显示在<select>下拉列表中</select>

时间:2014-12-28 14:18:57

标签: php jquery ajax codeigniter

我有一个从我的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

请帮忙。非常感谢!

2 个答案:

答案 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个参数,键(在这种情况下是索引)和值。里面的对象。