从jquery保存数据

我正在尝试从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)?

您的数据格式不正确,无法将其传递给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); } 

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

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

 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对象,就可以将其作为数据键的值传递。