CI中的Ajax无法正常工作

时间:2018-04-12 07:24:40

标签: php json ajax codeigniter codeigniter-3

这是我第一次使用CI + AJAX + JSON。

我在Codeigniter的控制器目录中有一个控制器Admin.php。控制器代码如下:

public function getmylist()
{
    $users_arr[] = array("sno" => "1", "myname" => "hello");
    echo json_encode($users_arr);
}

然后,在视图中,我有一个包含以下代码的视图:

<select class="form-control" name="mod_countries" id="mod_countries">
  <?php
    if(isset($countrylist))
      foreach($countrylist as $c)
        echo "<option value=" . $c->cname . ">".$c->cname;
  ?>
</select>

然后我的目标选择我需要从ajax填充的是

<select class="form-control" name="mod_newlist" id="mod_newlist">
</select>

我的ajax如下:

$(document).ready(function() {
        $('#mod_countries').change(function(event) {
            var cname = $("select#mod_countries").val();
            alert(cname);
            $.ajax({
                    type: "post",
                    url: "<?php echo base_url(); ?>" + "Admin/getmylist",
                    dataType: "json",
                    data: {mcname: cname},
                    success: function(res){
                        if(res) {

                            var len=res.length;
                            $("#mod_newlist").empty();
                            for(var i=0; i<len; i++)
                            {
                                var sno=res[i]['sno'];
                                var myname=res[i]['myname'];
                                $("#mod_newlist").append("<option value='" + sno + "'>"+myname+"</option>");
                            }
                        }
                        else
                        {
                            console.log('hitting');
                        }
                    },
                    error: function(res, status, error) {
                        var err = res.responseText;
                        alert(res.Message);
                        alert(status);
                        alert(error);
                    }

            });
        });
    });

当我从第一个下拉列表中选择一个项目时,我会得到所选项目。现在我希望第二个下拉列表从控制器的代码中获取一个项目。但是,我的代码进入错误块并且警报显示每个警报行代码的错误消息:

未定义

parsererror

SyntaxError:位于0位置的JSON中的意外标记I

请告诉我我在哪里弄错了?

另外,请帮助我如何从模型返回sno-&gt;名称对,因为在lat,我想填充数据库中的新选择。

2 个答案:

答案 0 :(得分:3)

从响应中删除调试/垃圾数据,例如I am called。如果仍然不起作用,则按照

成功解析JSON
var res = $.parseJOSN(res);
if(res) {
.....

答案 1 :(得分:0)

您没有正确传递数据。 它应该像

data:{
  "key" : value
   //use " " to encapsulate string values, only in case of variable You pass value without ""

}

我现在使用CodeIgniter过去两个月了。早些时候我在使用ajax时遇到了很多麻烦。但是我的朋友建议我使用AngularJs。我花了一天时间学习Angular,结果证明它非常有帮助。

这将节省大量时间。并使您的工作变得如此简单。起初,这可能听起来很难,但如果你花一些时间编码那么它会让你的生活变得更好。我是从JavaTpoint.com学到的,而且解释得非常好。

不要试图一劳永逸地理解一切,并在学习时练习。