使用$ .ajax()将元素保存到数据库

时间:2011-03-16 00:08:38

标签: javascript ruby-on-rails ajax jquery

我正在尝试将application.js文件中动态创建的元素保存到数据库中。代码看起来像这样吗?:

$.ajax({
   type: "POST",
   data: { title: 'oembed.title', thumbnail_url: 'oembed.thumbnail_url'}
});

有什么我想念的吗?假设oembed.titleoembed.thubnail_url包含我要保存的值,titlethumbnail是数据库列。

2 个答案:

答案 0 :(得分:0)

我看到的第一个问题是你的数据是字符串。摆脱'引用

$.ajax({
   type: "POST",
   data: { title: oembed.title, thumbnail_url: oembed.thumbnail_url}
});

答案 1 :(得分:0)

我将假设您需要将一些用户提供的数据合并到新的DB对象中 - 否则,从Rails创建它会更容易。

如果您正在使用完全用户提供的数据,则可以使用serialize()方法(对服务器生成的内容使用隐藏字段):

jQuery.ajax({
    url: '/path/to/whatever',
    data: $('#MyForm').serialize(),
    type: 'POST'
});

或者您可以使用jQuery Form Plugin - 它可以让您轻松地将用户提供的数据与服务器生成的数据相结合。例如:

$('#MyForm').ajaxForm({
    //Hardcoded/server-generated stuff goes in here
    //(and will be added to the data from the form inputs):
    data: {title: oembed.title},
    type: 'POST'
});

ajaxForm()函数将设置表单及其默认值,并在用户点击提交按钮时发送AJAX调用(另请参阅:ajaxSubmit())。

在Rails方面,一切都应该与用户正常提交表单完全相同(尽管您可能只想回复状态代码/消息 - 没有调用重定向或页面呈现)。

希望这有帮助!

PS:在您的示例中,您似乎可以在AJAX调用中使用data: oembed。这将提交所有 oembed的属性......