【问题标题】:Populating dropdown using ajax php codeigniter使用 ajax php codeigniter 填充下拉列表
【发布时间】:2017-10-16 07:08:51
【问题描述】:

我一直在尝试不同论坛上提供的所有帮助,但现在放弃并在这里发布我的问题。尝试使用 ajax 调用填充下拉列表。成功获取json格式的数据。但不知道填写下拉菜单。下面的代码: 控制器:

function getRegion()
{
    $this->load->model('Settings_model');
    $title = $this->input->get('title');

    $result =   array("region" => $this->Settings_model->getSelectedRegion($title));
    echo json_encode($result);      
}

查看:

        $(document).on('change', '#campaignSel', function() {
        changecampaign();
    });

    function changecampaign(){
        var title= "New Normal";//$('#campaignSel option:selected').text();//$('#campaignSel').text();
        $regionSel = $("#regionSel");
            $.ajax({
                type:"GET",
                url: "<?php echo base_url('Pricecomparison/getRegion'); ?>",
                data:{ "title":"New Normal"},
                datatype: "json",
                success: function(result){
                    var appenddata;
                    $.each(result, function (key, value) {
                        appenddata += "<option value = '" + value.id + " '>" + value.region + " </option>";                        
                    });
                    $('#regionSel').html(appenddata);
                },
                error: function(xhr, textStatus, error){
                    console.log(xhr.statusText);
                    console.log(textStatus);
                    console.log(error);
                }
            });
        }

响应:{"region":[{"id":"1","re​​gion":"109 FEATHERSTON ST (ELEC)\r\n"},{"id":"2","re​​gion" :"阿什伯顿/中坎特伯雷 电子"}]} 我想用 Regions 填充下拉列表。

【问题讨论】:

  • $.each(result.region, function (key, value) { appenddata += "
  • 给出这个错误 TypeError: obj is undefined length = obj.length,
  • 可能是你的响应数据为空
  • 试试我更新的答案@Danish

标签: php json ajax codeigniter dropdown


【解决方案1】:

你需要像 $.each(result.region, function (key, value) { 这样循环区域而不是结果

更新1:

添加if条件if ($.isArray(result.region)){ ... }

result =  {"region":[{"id":"1","region":"109 FEATHERSTON ST (ELEC)\r\n"},{"id":"2","region":"ASHBURTON/MID CANTERBURY ELEC"}]}
var appenddata='';
if ($.isArray(result.region)){
$.each(result.region, function (key, value) {
                        appenddata += "<option value = '" + value.id + " '>" + value.region + " </option>";    
                        
                        console.log(appenddata);
                    });
                    }
&lt;script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"&gt;&lt;/script&gt;

【讨论】:

  • 多年来我一直在尝试相同的方法。但它不会填充下拉列表。并给出这个错误。 TypeError: obj is undefined length = obj.length,
  • 如果条件有助于不通过错误。但问题是响应数据为什么是空的,因为它在控制台中显示数据。控制台.log(结果);表示数据正在响应。
【解决方案2】:

最后我解决了我的代码中的问题。我喜欢在下面分享我对代码所做的更改: 补充:

contentType: "application/json",

parsedobj = JSON.parse(result)

所以最终的ajax代码是:

$.ajax({
                type:"GET",
                url: "<?php echo base_url('Pricecomparison/getRegion'); ?>",
                data:{ "title":title},
                contentType: "application/json",
                datatype: "json",
                success: function(result){
                     parsedobj = JSON.parse(result)
                     var appenddata='';
                        $.each(parsedobj.region, function(index, value) 
                        {
                            appenddata += "<option value = '" + index + "'>" + value.region + " </option>";    
                        });

                        $('#regionSel').html(appenddata); 
                },
                error: function(xhr, textStatus, error){
                    console.log(xhr.statusText);
                    console.log(textStatus);
                    console.log(error);
                }
            });

【讨论】:

    猜你喜欢
    • 2013-09-24
    • 2011-07-17
    • 1970-01-01
    • 1970-01-01
    • 2012-11-08
    • 2013-05-07
    • 2015-03-14
    • 1970-01-01
    • 2020-10-03
    相关资源
    最近更新 更多