【问题标题】:Add items into dropdown using ajax/jquery using codeigniter使用 ajax/jquery 使用 codeigniter 将项目添加到下拉列表中
【发布时间】:2014-12-30 02:35:28
【问题描述】:

这可能是重复的问题,但我想提一下,其他答案并没有解决我的问题。

正如问题所说,我想使用 ajax/jquery 填充下拉列表。我能够成功发送和接收 JSON 格式的数据,但它没有附加下拉列表。以下是我的代码:

查看

  <select name="guard_id" id="guard_id" style="width:100%;">
    <option>select guard</option>
       <optgroup label="Previously assigned guard" id="trained_guards">
       </optgroup>
  </select>

Jquery/Ajax 调用

function checkTrainedGuards(sid) {

        $.ajax({
            dataType: 'JSON',
            type: 'POST',
            url: '<?php print site_url('roster/check_trained_guards'); ?>',
            data: { sid: sid},
            beforeSend:function() {
                // this is where we append a loading image
                $('#sid').addClass('loader-roster');
            },
            success:function(data) {
             var appenddata;
             $.each(data, function (key, value) {

             appenddata += "<option value = '" + value.gid + " '>" + value.gname + " </option>";                        
             });
            $('#trained_guards').html(appenddata);

            },
            error:function(){
                // failed request; give feedback to user
            }
        });
    }

控制器

  public function check_trained_guards(){

        $this->load->model("guard");
        $sid=$this->input->post("sid");

        $trainedGuards=$this->guard->getGuardAlreadyWorkedOnSite($sid);

        foreach ($trainedGuards as $guard) {

        print json_encode(array(
            'gid'  => $guard->gid,
            'gname' => $guard->guard_name
        ));
        }
      }
}

当我使用 firebug 对其进行测试时,我看到数据是正确的,并且是 JSON 格式,如下所示:

[{"gid":"293","gname":"Abc"},{"gid":"96","gname":"guard2"},{"gid":"101","gname":"guard3"},{"gid":"91","gname":"guard4"}]

但是,我只是想知道为什么它没有将结果附加到下拉框中?

我,也由alert(value.gid)jquery each loop 中测试了它,上面写着undefined

我们将不胜感激。

【问题讨论】:

  • 对于初学者,请在成功回调中设置var appenddata = "";。然后在使用 html 方法之前尝试 console.logging 它,看看它等于什么。
  • 我什么都不打印。

标签: php jquery ajax json codeigniter


【解决方案1】:

您的 JSON 格式似乎有误。您的 php 部分应如下所示:

$arr = array();
foreach ($trainedGuards as $guard) {
$arr[] = $guard;

}

print json_encode($arr);

现在此代码将返回一个有效的 JSON,如下所示。 JOSN 将对象数组显示如下:

[{"gid":"2","gname":"Gurd1"},{"gid":"3","gname":"Guard2"}]

在您的 ajax 响应中编写以下代码

 var data = [{"gid":"2","guard_name":"Gurd1"},{"gid":"3","guard_name":"Guard2"}]; 
//This is the response format  You can also use JSON.parse if its in the string format



    var appenddata = "";
    $.each(data, function (key, value) {

    appenddata += "<option value = '" + value.gid + " '>" + value.gname + " </option>";                        
    });
$('#trained_guards').html(appenddata);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-09
    • 2021-05-06
    相关资源
    最近更新 更多