【问题标题】:Django / Ajax: javascript object formattingDjango / Ajax:javascript 对象格式化
【发布时间】:2012-10-23 13:46:47
【问题描述】:

我是 javascript 和 jquery 的新手。我有以下情况。我正在序列化表格的已编辑行并通过 ajax 将其发送到服务器。

我必须将原始数据(编辑前)和最终数据(编辑后的行)传递给服务器。

分别通过它们效果很好,但是当我将它们放在一起时,发生了一些奇怪的事情。对于懂 javascript 的人来说,这可能是微不足道的事情。

“发送代码”是:

$.ajax({
        data: data,
        dataType: 'json',
        ...
       });

当我得到原始行数据或编辑后的行数据为:

data = tr.find(':input').serializeArray();

我在 request.POST 中得到一个普通的字典,像这样:

<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']}>>

我怎样才能做到这一点?

【问题讨论】:

    标签: javascript jquery ajax django


    【解决方案1】:

    解决方案是使用encodeURIComponent(JSON.stringify(data)) 而不是仅使用data

    由于我在使用 django,所以我也使用了 dajaxice,所以我实际上添加了'argv='+encodeURIComponent(JSON.stringify(data)),因此 Dajaxice 会查找一个名为 'argv' 的键并获取我的值。

    【讨论】:

      【解决方案2】:

      request.POST 用于以普通格式编码发送的数据。你不是在发送那个,你是在发送一个原始的 JSON 字符串。要在视图中访问它,请使用request.body

      【讨论】:

      • 如何正确编码 request.POST 中的数据。在 request.body 我有:'new_data%5B0%5D%5Bname%5D=Name&new_data%5B0%5D%5Bvalue%5D=domain_2&new_data%5B1%5D%5Bname%5D=Type&new_data%5B1%5D%5Bvalue%5D=CNAME&new_data% 5B2%5D%5Bname%5D=值&new_data%5B2%5D%5Bvalue%5D=domain_1&new_data%5B3%5D%5Bname%5D=Ttl&new_data%5B3%5D%5Bvalue%5D=500&original_data%5B0%5D%5Bname%5D=名称&original_data% 5B0%5D%5Bvalue%5D=domain_2&original_data%5B1%5D%5Bname%5D=Type&original_data%5B1%5D%5Bvalue%5D=CNAME& ...(由于字符限制,我不得不截断数据)request.POST 是访问的正确结构
      猜你喜欢
      • 2014-07-27
      • 2015-07-06
      • 2012-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多