我有問題與JSON。有人可以告訴我爲什麼第一個選項有效,第二個不行? 第二種選擇是在其他控制器中工作,但不是在這個控制器中。CakePHP parserror與_serialize JSON響應
在數據庫中,我有名字表狀態,以及模型中CakePHP的 - 狀態 這是莫名其妙這種情況有關?
這裏的是我recieving
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定義爲數組具有在使用XmlView時自動附加頂級元素的附加好處。如果您爲_serialize和XmlView使用字符串值,請確保您的視圖變量具有單個頂級元素。沒有一個頂級元素,Xml將無法生成。 - 可能導致它返回其他東西(xml) –
HellBaby
使用json擴展調用url也很重要:action.json - 否則你的序列化方法將失敗。而且你沒有充分利用蛋糕休息響應的全部潛力。 – mark