处理json数组CAKEPHP

处理json数组CAKEPHP,json,cakephp,Json,Cakephp,这是我的javascript snipet <script type="text/javascript"> $(document).ready(function() { $('form#FormId button.btn').click(function(event){ $.ajax({ type: "POST", url: "/controller/edit",

这是我的javascript snipet

<script type="text/javascript">
$(document).ready(function() {
        $('form#FormId button.btn').click(function(event){
            $.ajax({
                type: "POST",
                url: "/controller/edit",
                data: $("#FormId").serialize(), 
                success: function(response) {
                    alert(response.message);
                    alert(response['message']);
                }
            }); 
        });
    });

javascript上的两个警报都返回“未定义”如何处理?

根据我的经验,回显内容不起作用。您应该返回json_编码的数据

这将使您的
edit()
函数如下所示:

public function edit()
{
    $this->autoRender = false;
    $this->request->onlyAllow('ajax');

    return json_encode(array('message' => 'Welcome', 'type' => 'success'));
}

确保它有效;只需提醒整个响应对象以查看返回的内容。

我使用控制器中的以下代码来实现这一点

public function edit()
{
    $this->RequestHandler->respondAs('json'); // Very important without this it will not work
    $this->autoRender = false;
    $data = array('message'=>'Welcome','type'=>'success');
    return json_encode($data);
}

因此,没有人能正确理解这一点

你需要使用

请参见如何使用启用

Cake现在将自动设置正确的标题,序列化为JSON,而不会呈现布局

作为旁注,您的代码
警报(response.message)不起作用,因为
响应
是一个字符串。您的标题是
text/html
而不是
application/json
。尝试
console.log(response)
,您将看到它只是一个字符串。

尝试添加

 dataType: 'json',
您的ajax方法

如果不起作用,请尝试以下操作: 加

到您的索引方法

ie brower不知道json格式的文本。
你在这次测试中使用了什么样的broswer?使用F12打开开发人员工具包来检查服务器响应是什么,这是一个objct吗?

在$.ajax语句中不需要数据类型:“json”吗?通常,直接使用json_encode()和/或exit()不是最佳做法。由于是2.x,视图层(视图类)应该对此负责。有关详细信息,请参阅。警报响应仅获取[object]。最好使用console.log(响应);这是来自response的警报:{“message”:“Welcome”,“type”:“success”}如果您现在键入:
console.log(response.message)或alert(response.message)
,您应该会看到“Welcome”不知道为什么,我无法使用此方法获得响应,我已经在AppController上启用了RequestHandler,并且路由器::parseExtensions('json','xml');在routes.php上使用此方法时,响应为空。
class PostsController extends AppController {
    public $components = array('RequestHandler');

    public function index() {
        $this->request->onlyAllow('ajax');
        $this->set(array(
            'data' => array('message'=>'Welcome','type'=>'success'),
            '_serialize' => 'data',
        ));
    }
}
 dataType: 'json',
$this->response->type('text/plain');