CakePHP 2保存来自JSON请求的数据

时间:2015-03-26 23:17:40

标签: json save cakephp-2.0

表单由CakePHP FormHelper自动创建,请求创建如下:

    $.ajax({
        type: "POST",
        url: _url,
        data: JSON.stringify( $("form").serializeArray() ),
        contentType: "application/json; charset=utf-8",
        dataType: "json"
    });

在控制器中,我添加此行以获取正确的JSON数据:

$this->RequestHandler->addInputType('json', array('json_decode', true));

但它不合适,因为我不能把它放入模型保存方法

(
    [0] => Array
        (
            [name] => _method
            [value] => POST
        )

    [1] => Array
        (
            [name] => data[ModelName][fieldname]
            [value] => value of this field
        )

)

如何从JSON请求中获取正确的数据?

2 个答案:

答案 0 :(得分:0)

您的json请求发送到控制器操作如下:

$.ajax({
    type: "POST",
    url: _url,
    data: JSON.stringify( $("form").serializeArray() ),
    contentType: "application/json; charset=utf-8",
    dataType: "json"
});

在控制器操作中获取响应,如下所示:

if($this->RequestHandler->isAjax()){

    // "spit" out json re
    echo $this->request->data;

    //decode data into an array
    $decodedData = json_decode($this->request->data);

    // You can check your data before saving...
    //pr($decodedData); die();

    //standard saving code would be
    $this->Model->save($decodedData);
}

请尝试以上逻辑并告诉我。

谢谢:)

答案 1 :(得分:0)

不幸的是,这不是解决方案。因为post请求中的数据格式不同:

{"name": "data[FieldName]", "value": "testvalue"}