这是我第一次使用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,我想填充数据库中的新选择。
答案 0 :(得分:3)
从响应中删除调试/垃圾数据,例如I am called
。如果仍然不起作用,则按照
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学到的,而且解释得非常好。
不要试图一劳永逸地理解一切,并在学习时练习。