Javascript 如何将两个json对象连接在一起?

Javascript 如何将两个json对象连接在一起?,javascript,jquery,html,ajax,json,Javascript,Jquery,Html,Ajax,Json,我有一项任务要做用户编辑。是我干的。但我无法将值作为json对象传递。如何连接两个值。 我的第一个目标是 $.fn.serializeObject = function() { var o = {}; var a = this.serializeArray(); $.each(a, function() { if (o[this.name] !== undefined) { if (!o[this.name].push) {

我有一项任务要做用户编辑。是我干的。但我无法将值作为json对象传递。如何连接两个值。 我的第一个目标是

$.fn.serializeObject = function()
{
    var o = {};
    var a = this.serializeArray();
    $.each(a, function() {
        if (o[this.name] !== undefined) {
            if (!o[this.name].push) {
                o[this.name] = [o[this.name]];
            }
            o[this.name].push(this.value || '');
        }
        else {
                
                o[this.name] = this.value || '';
        }
    });
    
    return o;
};
var location = function() {
    var self = this;
    self.country = ko.observable();
    self.state = ko.observable();
};
 
var map = function() {

    var self = this;
    self.lines = ko.observableArray([new location()]);
    self.save = function() {
        var dataToSave = $.map(self.lines(), function(line) {
            return line.state() ? {
                state: line.state().state,
                country: line.country().country
            } : undefined
        });
        alert("Could now send this to server: " + JSON.stringify(dataToSave));
    };
};
 
ko.applyBindings(new map());

});
我的第二个目标是

$.fn.serializeObject = function()
{
    var o = {};
    var a = this.serializeArray();
    $.each(a, function() {
        if (o[this.name] !== undefined) {
            if (!o[this.name].push) {
                o[this.name] = [o[this.name]];
            }
            o[this.name].push(this.value || '');
        }
        else {
                
                o[this.name] = this.value || '';
        }
    });
    
    return o;
};
var location = function() {
    var self = this;
    self.country = ko.observable();
    self.state = ko.observable();
};
 
var map = function() {

    var self = this;
    self.lines = ko.observableArray([new location()]);
    self.save = function() {
        var dataToSave = $.map(self.lines(), function(line) {
            return line.state() ? {
                state: line.state().state,
                country: line.country().country
            } : undefined
        });
        alert("Could now send this to server: " + JSON.stringify(dataToSave));
    };
};
 
ko.applyBindings(new map());

});
我想连接这个。我试过了,但我错了

$.ajax({
        url: '/users/<%=@user.id%>',
        dataType: 'json',
        //async: false,
        //contentType: 'application/json',
        type: 'PUT',
        data: {total_changes: JSON.stringify(dataToSave) + JSON.stringify($("#edit_user_1").serializeObject())},
        //data:JSON.stringify(dataToSave),
        //data:dataToSave,
        success: function(data) {
            alert("Successful");
          },
          failure: function() {
            alert("Unsuccessful");
          }
        });
$.ajax({
url:“/users/”,
数据类型:“json”,
//async:false,
//contentType:'应用程序/json',
键入:“PUT”,
数据:{total_changes:JSON.stringify(dataToSave)+JSON.stringify($(“#编辑_用户_1”).serializeObject())},
//数据:JSON.stringify(dataToSave),
//数据:dataToSave,
成功:功能(数据){
警报(“成功”);
},
失败:函数(){
警报(“未成功”);
}
});
当我运行这个程序时,它会在终端中显示这样的错误


如何解决此问题?

如果您有json1和json2对象,则可以执行以下操作:

$.extend(json1, json2); 

因此,在json1中,您将合并两个对象。

问题是
JSON.stringify(…)+JSON.stringify(…)
。这将创建一个类似于
“{…}{…}”
的字符串,该字符串显然无效(这就是您从中获得
JSON::parserror
的原因)

我不确定您想要完成什么,也不确定您的服务器希望使用哪种JSON结构,但您可以这样做

    …
    contentType: 'application/json',
    data: JSON.stringify( {
        total_changes: dataToSave,
        edits: $("#edit_user_1").serializeObject()
    }),
    …

您尝试过jQuery扩展方法吗?我不熟悉jquery。所以你可以给我一些指导sample@NithinViswanath您有两个json对象,所以创建一个jsonarray并放置这两个对象。是的。我也试过了。我不能得到一个肯定的结果。你应该在发布前在SO上搜索问题。与此相关的问题和解决方案已经发布。这些链接可能会有所帮助:@NithinViswanath:这是PHP语法吗?它看起来不像是有效的JSON。哪个终端显示这个?