从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请求而不是data
为null
也可能是一个好主意,即:
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对象,就可以将其作为数据键的值传递。