从jquery保存数据
Posted
技术标签:
【中文标题】从jquery保存数据【英文标题】:Saving data from jquery 【发布时间】:2013-08-27 16:14:10 【问题描述】:我正在尝试从 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)而无法正常工作?
【问题讨论】:
列名日期应该是DATETIME,检查你设置的内容,在保存数据之前检查数据是否正常,保存后放假,$this->Reservation->save($ this->request->data,false); 【参考方案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
是 null
可能也是一个好主意,即:
if($this->request->is('post'))
$this->Reservation->save($this->request->data);
还要检查您是否使用了Security Component,这可能是blackhole 请求。
最后但并非最不重要的一点是,检查您已经提到的日期格式,如果涉及验证,这也可能是一个问题,至少在表格列需要不同格式的情况下这是一个问题。因此,如有必要,请正确格式化日期,请参阅 Convert JS date time to mysql datetime 或 http://arshaw.com/fullcalendar/docs/utilities/formatDate/ 以防您使用 FullCalender(仅根据您的事件/属性名称猜测)。
【讨论】:
感谢您的帮助。是的,它是日期时间的验证。如果我评论字段 reservation_time_from 和 reservation_time_to 的验证,它将数据保存到数据库,但日期为 0000-00-00 00:00:00 所以你必须正确格式化日期,我添加了两个链接到一些示例。【参考方案2】: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 对象,你就可以将它作为数据键的值传入。
【讨论】:
感谢您的回复,但仍然无法正常工作,我假设日期格式存在问题 发布更多代码。另外,你有什么回应? console.log(data) 这样您就可以看到返回的内容。 error: function(error) 也可以查看是否有错误。您如何将 $_POST 转换为服务器上的数据?这些会有所帮助。 :) @carterdata
属性不需要 JSON 字符串,它需要纯字符串(默认配置中的查询字符串)或键/值对象或数组。以上是关于从jquery保存数据的主要内容,如果未能解决你的问题,请参考以下文章
使用 Laravel 4+ 从 jQuery/ajax 保存序列化的可排序数据
使用 jquery/javascript 将数据从 html 表单保存到文本文件
将 jQuery 数据从 View 传递到 Controller 并将其保存为多对多