3

ユーザー編集を行うタスクがあります。これは私がしました。しかし、jsonオブジェクトとして値を渡すことはできません。2つの値を結合するにはどうすればよいですか。私の最初のオブジェクトは

$.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;
};

私の2番目のオブジェクトは

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");
          }
        });

これを実行すると、ターミナルでこのようなエラーが表示されます。

どうすればこれを解決できますか?

4

2 に答える 2

1

json1 および json2 オブジェクトがある場合は、次のことができます。

$.extend(json1, json2); 

したがって、json1 では、両方のオブジェクトがマージされます。

于 2013-02-08T13:02:42.977 に答える
0

問題はJSON.stringify(…) + JSON.stringify(…). "{…}{…}"これにより、明らかに無効なJSONのような文字列が作成されます(そこJSON::ParserErrorから取得できます)。

あなたが何を達成しようとしているのか、サーバーがどのJSON構造を期待しているのかわかりませんが、次のようなことができます

    …
    contentType: 'application/json',
    data: JSON.stringify( {
        total_changes: dataToSave,
        edits: $("#edit_user_1").serializeObject()
    }),
    …
于 2013-02-08T14:53:45.207 に答える