Php CI中的Ajax不起作用
这是我第一次使用CI+AJAX+JSON 我在Codeigniter的controllers目录中有一个controller Admin.php。控制器代码如下所示: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() {
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,仅此。。。