2014-05-17 46 views
0

我有以下代碼CakePHP的 - JSON_encode AJAX應答爲未定義

$this->autoRender = false; 
$data['success'] = true; 
$data['data'] = 'Target Successfully set'; 
echo json_encode($data); 

它發送到一個Ajax請求的響應..

的我有以下

success:function (response, textStatus) { 
     if (response.error){ 
      //show error message... 
     }else{ 
      //show success message... 
      console.log(response); // shows what is expected 
      //ie. {"success":true,"data":"Target Successfully set"} 
     } 

然而,當我嘗試訪問response.data,我得到Undefined ...代碼有什麼問題?

+1

將'dataType:「json」'添加到您的ajax調用中,或者在CakePHP中設置相應的標頭。 – Holt

+1

這不是[生成json響應的正常方式](http://book.cakephp.org/2.0/en/views/json-and-xml-views.html#)。 – AD7six

回答

3

你不告訴JavaScript你要返回什麼樣的數據,所以它被認爲是純文本,所以你在日誌中看到的只是包含服務器輸出內容的完整字符串。

response.error也未定義,但由於javascript中的undefined == false,您沒有看到它。

您必須在您的ajax調用中設置dataType: "json",或者在CakePHP操作中添加$this->response->type('application/json');

+0

簡短,簡明的解釋。謝謝! – LogixMaster