ResponseText应该是json_encode,而不是cakephp中的HTML

时间:2013-07-08 00:14:34

标签: javascript ajax cakephp

我正在尝试显示表的行数。在控制器中,我有一个像:

这样的功能
public function index(){
  $count= $moviecount = $this->Media->find('count');
  $this->set(array('data' => $count, '_serialize' => 'data'));
}

在我的index.ctp中,我有一个带有div和一切的常规HTML脚本。在我的JavaScript文件中,我做了类似的事情。

function checkTbl(){
checkBrowser();//callback function
xmlhttprequestobject.open("GET", "/url/", false); //async
xmlhttprequestobject.onreadystatechange = function(){
if(xmlhttprequestobject.readyState==4 && xmlhttprequestobject.status==200){
  alert(xmlhttprequestobject.responseText);
}
}
xmlhttprequestobject.send();
}

但是当我单击onClick上的图像事件时,响应是HTML,而不是计数的整数值。请帮忙。

2 个答案:

答案 0 :(得分:1)

您是否正在加载RequestHandler组件?如果不使用.json扩展名调用URL,则必须manually set视图以json的形式响应。如果使用路由器解析扩展,则在加载组件时,您将自动获得json响应。您是否按照this page上的说明进行操作?

答案 1 :(得分:0)

如果你想将resposeText作为json_encode,那么在你的控制器函数中尝试这样的东西。通过这个你不需要.ctp文件。

 public function index()
 {
     $count= $moviecount = $this->Media->find('count');
     //$this->set(array('data' => $count, '_serialize' => 'data'));
    return new CakeResponse(array('body' => json_encode($count)));
 }