私はjavascriptとjqueryが初めてです。次のような状況があります。テーブルの編集された行をシリアル化し、ajax 経由でサーバーに送信しています。
元のデータ (編集前) と最終データ (編集された行) をサーバーに渡す必要があります。
それぞれを別々に渡すとうまくいきますが、それらをまとめると奇妙なことが起こります。JavaScriptをよく理解している人にとっては、おそらく些細なことです。
「送信コード」は次のとおりです。
$.ajax({
data: data,
dataType: 'json',
...
});
元の行データまたは編集された行データを次のように取得すると:
data = tr.find(':input').serializeArray();
次のように、request.POST で通常の dict を取得します。
<QueryDict: {u'Type': [u'CNAME'], u'Name': [u'domain_2'], Ttl': [u'500'], u'Value': [u'domain_1']}>
しかし、次のように元のデータと新しいデータの両方を取得しようとすると:
original_data = tr.find(':input').serializeArray();
new_data = tr.find(':input').serializeArray();
var data = {}
data.original_data = original_data
data.new_value = new_data
これはうまくいきません。私はこのようなものを得る:
<QueryDict: {u'new_value[1][name]': [u'Type'], u'new_value[3][name]': [u'Ttl'], u'new_value[2][value]': [u'domain_1'], u'original_data[2][name]': [u'Value'], u'new_value[2][name]': [u'Value'], u'original_data[0][name]': [u'Name'], u'original_data[3][value]': [u'300'], u'original_data[1][value]': [u'CNAME'], u'new_value[3][value]': [u'500'], u'original_data[0][value]': [u'domain_2'], u'new_value[1][value]': [u'CNAME'], u'original_data[3][name]': [u'Ttl'], u'new_value[0][name]': [u'Name'], u'original_data[2][value]': [u'domain_1'], u'original_data[1][name]': [u'Type'], u'new_value[0][value]': [u'domain_2']}>
手に入れたいと思っていた
<QueryDict: {'original_data': {u'Type': [u'CNAME'], u'Name': [u'domain_2'], Ttl': [u'500'], u'Value': [u'domain_1']}, 'new_value': {u'Type': [u'CNAME'], u'Name': [u'domain_2'], Ttl': [u'500'], u'Value': [u'domain_1']}>>
どうすればこれを達成できますか?