从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 请求而不是 datanull 可能也是一个好主意,即:

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 转换为服务器上的数据?这些会有所帮助。 :) @carter data 属性不需要 JSON 字符串,它需要纯字符串(默认配置中的查询字符串)或键/值对象或数组。

以上是关于从jquery保存数据的主要内容,如果未能解决你的问题,请参考以下文章

使用 Laravel 4+ 从 jQuery/ajax 保存序列化的可排序数据

使用 jquery/javascript 将数据从 html 表单保存到文本文件

将 jQuery 数据从 View 传递到 Controller 并将其保存为多对多

如何使用多个 Django FBV 通过 Ajax+jQuery 捕获和保存数据

如何使用jquery将数据保存在cookie中[重复]

Laravel:在保存到数据库之前从 jQuery UI Datepicker 将 m/d/Y 转换为 Y-m-d