0

我正在尝试从 jquery 保存数据,但它不起作用,所以我需要你的帮助!我正在使用 CakePHP 2.3。所以这是我的 jQuery

$.ajax({
    url: 'http://localhost/test/reservations/save',
    type: 'POST',
    data: {reservation_time_from : calEvent.start, reservation_time_to: calEvent.end, user_id : "1", laboratory_id : "1"},
    success: function(data) {
        alert("saved")
    }
}); 

控制器

 public function save() {
    if ($this->data != null) {
        $this->Reservation->save($this->request->data);
    }
    $this->autoRender = false;
}

由于 jQuery 中的日期格式(2013 年 8 月 26 日星期一 11:00:00 GMT+0200),它可能不起作用?

4

2 回答 2

1

您的数据未正确格式化以将其传递给Model::save(). 请参考文档:

http://book.cakephp.org/2.0/en/models/saving-your-data.html

它应该采用以下格式:

Array
(
    [ModelName] => Array
    (
        [fieldname1] => 'value'
        [fieldname2] => 'value'
    )
)

所以传递给 AJAX 调用data属性的对象应该如下所示:

{ModelName: {fieldname1: 1, fieldname2: 2}}

在你的情况下,这将是:

{Reservation: {reservation_time_from: calEvent.start, reservation_time_to: calEvent.end, user_id: 1, laboratory_id: 1}}

检查 POST 请求而不是检查datanull 可能是一个好主意,即:

if($this->request->is('post')) {
    $this->Reservation->save($this->request->data);
}

还要检查您是否使用了可能使请求黑洞化的安全组件。

最后但并非最不重要的一点是,检查您已经提到的日期格式,以防涉及验证,这也可能是一个问题,至少在表格列需要不同格式的情况下这是一个问题。因此,如有必要,请正确格式化日期,请参阅将 JS 日期时间转换为 MySQL 日期时间http://arshaw.com/fullcalendar/docs/utilities/formatDate/,以防您使用FullCalender(仅通过您的事件/属性名称猜测) .

于 2013-08-25T10:57:56.523 回答
0
data: {reservation_time_from : calEvent.start, reservation_time_to: calEvent.end, user_id : "1", laboratory_id : "1"},

不是有效的 json。

您需要在密钥上加上双引号才能被视为有效。

如果 reservation_time_from 是一个变量,那么您应该创建一个对象文字并按以下方式添加它:

myDataObject = {};
myDataObject[reservation_time_from] = calEvent.Start;

构建 json 对象后,您可以将其作为数据键的值传入。

于 2013-08-24T20:12:50.773 回答