我遇到JSON问题。有人能告诉我为什么第一个选项有效,第二个没有? 第二个选项在每个其他控制器中工作,但不在此控制器中。
在数据库中我有名称状态的表格,以及CakePHP中的模型 - 状态 这在某种程度上与这种情况有关吗?
这是我收到的错误
parsererror SyntaxError: JSON.parse: unexpected end of data
我的CakePHP控制器功能选项1(工作):
public function admin_add(){
if($this->request->is('ajax'))
{
$this->autoRender = false;
$this->layout = 'ajax';
$this->Status->create();
if ($this->Status->save($this->request->data)){
$statuses = $this->Status->findById($this->Status->id);
$message = "Status has been added";
$status = "OK";
//$this->set(compact("message",'status','statuses'));
//$this->set('_serialize',array('message','status','statuses'));
echo json_encode(array(
'statuses' => $statuses,
'message' =>$message,
'status' => $status
));
}
}
}
第二个不工作: 公共职能admin_add(){
if($this->request->is('ajax'))
{
$this->autoRender = false;
$this->layout = 'ajax';
$this->Status->create();
if ($this->Status->save($this->request->data)){
$statuses = $this->Status->findById($this->Status->id);
$message = "Status has been added";
$status = "OK";
$this->set(compact("message",'status','statuses'));
$this->set('_serialize',array('message','status','statuses'));
/*echo json_encode(array(
'statuses' => $statuses,
'message' =>$message,
'status' => $status
));*/
}
}
}
我的ajax电话:
$.ajax({
type: "post",
url : location.pathname+"/add",
data: data,
dataType: "json",
success : function(resp){ //some actions here }
我不知道为什么标准集('_ serialize,...)方法无法正常工作:(
答案 0 :(得分:2)
我不知道为什么标准集('_ serialize,...)方法不起作用 适当地:(
但我有:你是否在你的AppController中添加了RequestHandlerComponent?
您无需致电
$this->autoRender = false;
$this->layout = 'ajax';
同样,RequestHandler会处理它。
答案 1 :(得分:1)
检查您的CakePHP版本。我在版本2.4.2中遇到了这个问题,并通过升级到2.4.3修复了它。