提交表单时向表单数据添加JavaScript对象

提交表单时向表单数据添加JavaScript对象,javascript,jquery,json,Javascript,Jquery,Json,用户可以选择在表单中执行多个操作,在提交表单时执行操作后,需要向表单添加JavaScript对象。我尝试了多种方法,以[Object Object] JavaScript对象 var damageitems = {'5b3b43285d57025915000002': {action: "accept",damage_location_name:"Front Bumper", estimated_total_repair_cost: "993.72", est

用户可以选择在表单中执行多个操作,在提交表单时执行操作后,需要向表单添加JavaScript对象。我尝试了多种方法,以
[Object Object]

JavaScript对象

var damageitems = {'5b3b43285d57025915000002':
                  {action: "accept",damage_location_name:"Front Bumper", estimated_total_repair_cost: "993.72", estimated_total_repair_cost_currency:"USD"}
                  }
我试过的脚本

$( "form" ).submit(function( event ) {
        event.preventDefault();
        url = $(this).attr( "action" );
        var postData = $(this).serializeArray();
        postData.push({name: 'damage_items', value: damage_items});
        $.post(url, postData, function(){});
    });
在服务器中达到的值

{"utf8"=>"✓", "_method"=>"put", "authenticity_token"=>"uztc+G0fyTb8wH7D6HZAslTfxuJvFLP3UunjiRjWylk=", "damage_items"=>"[object Object]", "action"=>"batch_update", "controller"=>"damage_items", "claim_id"=>"5b3b41415d57026665000001"}
我的目标将值提交为正常提交而不是ajax, js变量中的值在服务器中以散列形式到达,并带有键
damage\u items

不喜欢将其添加到表单控件值中然后提交的方式更新脚本到以下内容将达到效果

$( "form" ).submit(function( event ) {
    event.preventDefault();
    url = $(this).attr( "action" );
    var postData = $(this).serializeArray();
    postData.push({name: 'damage_items', value: JSON.stringify(damage_items)});
    $.post(url, postData, function(){});
});
当您尝试将数据存储在表单中时,如果它不是字符串,则使用toString方法将其转换为字符串。对象的toString方法返回
[Object Object]
,这就是您得到它的原因


将其转换为JSON字符串将防止出现这种情况。

将脚本更新为以下内容即可

$( "form" ).submit(function( event ) {
    event.preventDefault();
    url = $(this).attr( "action" );
    var postData = $(this).serializeArray();
    postData.push({name: 'damage_items', value: JSON.stringify(damage_items)});
    $.post(url, postData, function(){});
});
当您尝试将数据存储在表单中时,如果它不是字符串,则使用toString方法将其转换为字符串。对象的toString方法返回
[Object Object]
,这就是您得到它的原因


将其转换为JSON字符串将避免这种情况。

最好的方法是将JavaScript对象文本转换为JSON字符串(请参见差异)。因为机器很容易解析和生成,而且大多数服务器端语言都有解析的方法。同样在http请求中,如ajax,我们必须发送字符串

幸运的是,我们在js中有一个方法可以做到这一点,并且正在使用和一个方法将JSON转换为JavaScript对象文字

然后,在代码中:

//JavaScript对象文本
var损坏项目={'5b3b43285d57025915000002':
{措施:“接受”,损坏位置,名称:“前保险杠”,估计总维修成本:“993.72”,估计总维修成本,货币:“美元”}
}
damageitems=JSON.stringify(damageitems);
//JSON-机器很容易解析和生成
//我们可以把它放在一个请求中,因为它是一个字符串,

控制台日志(损坏项)最好的方法是将JavaScript对象文本转换为文本(请参见差异)。因为机器很容易解析和生成,而且大多数服务器端语言都有解析的方法。同样在http请求中,如ajax,我们必须发送字符串

幸运的是,我们在js中有一个方法可以做到这一点,并且正在使用和一个方法将JSON转换为JavaScript对象文字

然后,在代码中:

//JavaScript对象文本
var损坏项目={'5b3b43285d57025915000002':
{措施:“接受”,损坏位置,名称:“前保险杠”,估计总维修成本:“993.72”,估计总维修成本,货币:“美元”}
}
damageitems=JSON.stringify(damageitems);
//JSON-机器很容易解析和生成
//我们可以把它放在一个请求中,因为它是一个字符串,
控制台日志(损坏项)<代码>数据
必须是类型或字符串<代码>数据
必须是类型或字符串。