当前位置: 首页 > 知识库问答 >
问题:

如何使用XHR通过POST将数据作为键值对而不是字符串发送

丌官利
2023-03-14
myModule.factory('gridData', function($resource) {
    //define resource class
    var root = {{ root.pk }};
    var csrf = '{{ csrf_token }}';
    return $resource('{% url getJSON4SlickGrid root.pk %}:wpID/', {wpID:'@id'},{
            get: {method:'GET', params:{}, isArray:true},
            update:{method:'POST', headers: {'X-CSRFToken' : csrf }}
    });
});

通过这样创建xhr post请求:

item.$update();

这个post请求按预期发送到服务器,但是当我想访问QueryDict时,我不能访问通过以下方式传递的数据:

name = request.POST.get('name', None)

name总是none,如下所示。

 print request.POST
<QueryDict: {u'{"name":"name update","schedule":0"}':[u'']}>
<QueryDict: {u'name': [u'name update'], u'schedule': [u'0']}>

共有1个答案

祁烨
2023-03-14

你可以:

  • 摆弄客户端以发送数据而不是JSON
  • 使用json.loads(request.raw_post_data).get('name',None)(django<1.4)
  • 使用json.loads(request.body).get('name',None)(django>=1.4)

Angular文档讨论了转换请求和响应

 类似资料:
  • 问题内容: 具体来说,我正在尝试使用字符串任意过滤ORM。我已经尝试过exec和eval解决方案,但是我遇到了麻烦。下面的代码不起作用,但这是我知道如何解释我要去的地方的最好方法 问题答案:

  • 问题内容: 我有一个像这样的字符串: 现在指示键值对,而将其分开。我想将键值对添加到地图。 我可以使用以下方法实现此目的: 但是,有一种有效的方法吗? 我觉得代码效率低下,因为我使用了2个对象并两次调用了该函数。另外,我正在使用,如果没有值,可能会引发。 问题答案: 您可以使用以下代码对split()进行一次调用,并对String进行一次传递。但是,它当然首先假定字符串有效: 上面的代码 可能 比

  • 问题内容: 我想发送一个字符串作为ajax Post参数。 如下代码: 不管用。为什么? 问题答案: 尝试这样:

  • 问题内容: 有人可以简单地说明如何使jQuery发送实际的JSON而不是查询字符串吗? 实际上,这会将您精心准备的JSON转换为查询字符串。令人讨厌的事情之一是,对象中的任何内容都将转换为,这可能是由于查询字符串的限制所致。 问题答案: 您需要使用,首先将您的对象序列化为JSON,然后指定,以便您的服务器理解为JSON。这应该可以解决问题: 请注意,该对象在支持JavaScript 1.7 / E

  • 问题内容: 我如何使用getOutputStream方法发送一个strin。正如他们提到的,它只能发送字节。到目前为止,我可以发送一个字节。但不是字符串值。 提前致谢 问题答案: 如何使用PrintWriter: 编辑 :找到了我自己的答案,看到讨论了一个改进,但未列出。这是使用OutputStreamWriter编写字符串的更好方法:

  • 问题内容: 我正在使用此代码,但无法发送字符串数组: 问题答案: 你可以做这样的事情。 只需在其中循环添加数组标记和paas值即可。 这是数组标记。您可以使用循环在此标记中传递值。它将以数组形式发布到服务器上。 这是我如何使用的完整代码: 更新 要取消上载上传,您可以使用