从jquery保存数据

时间:2013-08-24 20:09:22

标签: javascript jquery ajax cakephp save

我正在尝试从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),它可能无法正常工作?

2 个答案:

答案 0 :(得分: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请求而不是data <{1}} 可能也是一个好主意,即:

null

同时检查您是否使用Security Component可能blackhole请求。

最后但并非最不重要的是,检查您已经提到过的日期格式,如果涉及验证,这可能也是一个问题,至少在表格列期望不同格式时会出现问题。因此,如有必要,请正确设置日期格式,如果您使用的是Convert JS date time to MySQL datetime,请参阅http://arshaw.com/fullcalendar/docs/utilities/formatDate/FullCalender(仅根据您的事件/媒体资源名称进行猜测)。

答案 1 :(得分: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对象,就可以将其作为数据键的值传递。