Php CI中的Ajax不起作用

Php CI中的Ajax不起作用,php,json,ajax,codeigniter,codeigniter-3,Php,Json,Ajax,Codeigniter,Codeigniter 3,这是我第一次使用CI+AJAX+JSON 我在Codeigniter的controllers目录中有一个controller Admin.php。控制器代码如下所示: public function getmylist() { $users_arr[] = array("sno" => "1", "myname" => "hello"); echo json_encode($users_arr); } $(document).ready(function() {

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

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

public function getmylist()
{
    $users_arr[] = array("sno" => "1", "myname" => "hello");
    echo json_encode($users_arr);
}
$(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);
                    }

            });
        });
    });
然后,在视图中,我有一个具有以下代码的视图:

<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如下所示:

public function getmylist()
{
    $users_arr[] = array("sno" => "1", "myname" => "hello");
    echo json_encode($users_arr);
}
$(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);
                    }

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

未定义

解析器错误

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

请告诉我哪里出错了


另外,请帮助我如何从模型返回sno->name对,因为在lat,我想填充新的select from数据库。

从响应中删除调试/垃圾数据,就像调用我一样。如果仍然不起作用,则按如下所示成功解析JSON

var res = $.parseJOSN(res);
if(res) {
.....

从响应中删除调试/垃圾数据,就像调用我一样。如果仍然不起作用,则按如下所示成功解析JSON

var res = $.parseJOSN(res);
if(res) {
.....

您没有正确地传递数据。 应该是

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

我使用CodeIgniter已经有两个月了。早些时候,我在使用ajax时遇到了很多麻烦。但是我的朋友建议我使用AngularJs。我只花了一天时间就学会了角度,结果证明它非常有用

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


不要试图一下子理解所有内容,边学习边练习。

您没有正确地传递数据。 应该是

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

我使用CodeIgniter已经有两个月了。早些时候,我在使用ajax时遇到了很多麻烦。但是我的朋友建议我使用AngularJs。我只花了一天时间就学会了角度,结果证明它非常有用

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


不要试图一下子理解所有内容,在学习的过程中进行练习。

学习做一些基本的调试,如果你不知道的话,可以去读一下。在本例中,您应该首先在浏览器开发工具中检查AJAX请求的实际响应。@CBroe感谢您的响应。这是我第一次使用CI+AJAX+JSON。我尝试过使用警报。浏览器的控制台什么也没说。如果您正在谈论一些我不知道的其他调试策略,请让我知道,我也很高兴了解这些。开发工具,网络面板。。。检查您的请求的实际服务器响应是什么。响应是:我被调用[{sno:1,myname:hello}]。。。。。。。。标题给出状态代码200 OK。。。。。。。。响应头的内容长度为:43,“我被调用”听起来像是有效的JSON?删除调试输出,并输出实际的JSON,仅此而已……学习做一些基本的调试,或者在没有线索的情况下继续阅读。在本例中,您应该首先在浏览器开发工具中检查AJAX请求的实际响应。@CBroe感谢您的响应。这是我第一次使用CI+AJAX+JSON。我尝试过使用警报。浏览器的控制台什么也没说。如果您正在谈论一些我不知道的其他调试策略,请让我知道,我也很高兴了解这些。开发工具,网络面板。。。检查您的请求的实际服务器响应是什么。响应是:我被调用[{sno:1,myname:hello}]。。。。。。。。标题给出状态代码200 OK。。。。。。。。响应头的内容长度为:43,“我被调用”听起来像是有效的JSON?删除调试输出,并输出实际的JSON,仅此。。。