嗨我有这个数据,我希望只有某个div将使用ajax刷新。我如何能够将json_encode传递给ajax,它将使用codeigniter加载某个div上的数据。 下面是我的控制器
$this->data['getNumberOfMessages'] = $this->mm->getNumberOfMessages($this->data['id']);
$this->data['countNumber'] = $this->data['getNumberOfMessages'];
$responseOnject = new stdClass();
$responseOnject->status = 'ok';
$responseOnject->StatusMessages=$this->data['countNumber'];
$this->output->set_output(json_encode($responseOnject));
这行代码
$this->output->set_output(json_encode($response));
输出这个
{"status":"ok","StatusMessages":20}
我希望在我的代码中传递我的ajax
$(document).ready(function(){
var id =$(this).data("messageid");
$.ajax({
type: "get",
url: $(this).data("href"),
success: function(data){
alert(data.StatusMessages);
console.log(data.StatusMessages);
$("#" + id + ' span.badge').html(data.StatusMessages);
}
});
});
并定位在我的某个div上,以便它会自动刷新 下面是我的代码
<tr>
<th>
<a href="#" id="<?php echo $id; ?>" data-messageid="<?php echo $id; ?>" data-href="<?php echo base_url().'profile'?>" title="messages">
<span class="badge"><?php echo $countNumber; ?></span>
message(s)</a>
</th>
</tr>
当我尝试alert(data.StatusMessages);
时,它返回undefined。
有人可以帮我解决这个问题吗?香港专业教育学院一直困在这..我的代码真的有效,但我想成为ajax,只有某些div刷新而没有引用我的整个页面。
非常感谢任何帮助。
答案 0 :(得分:0)
您需要首先解码响应JSON,以便能够将其作为JS对象进行访问。这是它在JS中的表现:
JSON.parse(JSONStringHere);
所以,你的成功回调应该是:
success: function(data){
data = JSON.parse(data); // this is what decodes JSON
alert(data.StatusMessages);
console.log(data.StatusMessages);
$("#" + id + ' span.badge').html(data.StatusMessages);
}
正如我在评论中所说,您没有使用AJAX调用正确的URL (虽然您说过并且它返回了JSON字符串;如果是,则上面的代码<强>会工作)。这看起来不会给你一个网址:
$(document).ready(function(){
var id =$(this).data("messageid");
$.ajax({
type: "get",
url: $(this).data("href"), // <---- what is the value of this?
修复后,您的代码就可以使用。
答案 1 :(得分:0)
对于JSON数据,您的控制器应具有以下输出行
<强>更新强>
刚刚注意到你的问题是codeigniter正在你的ajax响应旁边输出html。
要使其消失,控制器中的代码应如下所示:
$this->output
->set_content_type('application/json', 'utf-8')
->set_output(json_encode($responseOnject))
->_display();
exit;
这会强制输出库显示&amp;退出停止显示任何其他内容。
如果你没有设置应用程序/ json内容类型,你的响应将不会被视为JSON你必须在你的javascript代码中使用JSON.parse将它转换为json,这是一种不好的做法。 / p>