jquery - 如何在 jQuery ajax beforeSend 的 settings.data 中添加一个对象

标签 jquery ruby-on-rails ruby-on-rails-3 ujs

我绑定(bind)到 beforeSend 的 ajax 表单提交:

我的函数如下所示:

submitStuff : function(e, xhr, settings) {

    settings.data = {
            invitation : {
                emails : me.returnsArrayX(),
                bucket2 : me.returnsArrayY(),
                bucket3 : me.returnsArrayZ()
            }
    }

}

当我像这样手动提交到服务器时,这是有效的:

    $.ajax({
        type: 'POST',
        url: '/myurl',
        dataType: 'json',
        data: {
            invitation : {
                emails : me.returnsArrayX(),
                bucket2 : me.returnsArrayY(),
                bucket3 : me.returnsArrayZ()
            }
        }
    });

但是由于我使用的是Rails UJS,所以我想使用内置的表单提交器(数据远程)。为什么settings.data在上面不起作用?我是否需要将对象转换为数组或其他内容?

谢谢

最佳答案

processData设置为false,然后您可以简单地在beforeSend中使用对象:

$.ajax("/", {
    beforeSend: function(xhr, settings) {
        settings.data.key2 = "value2";
        settings.data.key3 = {
             more: "values",
             like: "this"
        }; 

        //Encode at end
        settings.data = jQuery.param(settings.data, false);
    },
    data: {
        key: "value"
    },
    processData: false,
    type: "POST"
}​);​

关于jquery - 如何在 jQuery ajax beforeSend 的 settings.data 中添加一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11731460/

相关文章:

javascript - 为什么回调未定义?

javascript - 如何在 ChartJS donut 上用浅灰色更改标签删除线?

ruby-on-rails - 如何在我的路由中对除一种模式之外的所有路由使用通配符?

javascript - 传递数据目标并重定向到 Rails

ruby-on-rails - 如何从 Rails 3 的响应中删除 Set-Cookie header ?

ruby-on-rails-3 - 使用 Rails Logger 在生产模式下创建日志的问题

jquery - 更改单选按钮并通过单击设置样式

jquery - 使用 ASP.NET MVC 的 FullCalendar 中的 DateTimeOffset

ruby-on-rails - 如何在纯文本电子邮件 View (.text.erb)中控制换行符

ruby-on-rails - Rails 3.0 中的 f.error_messages