如何在jquery ajax请求的data参数中表示json数组?
How do I represent a json array within the data parameter in a jquery ajax request?
我试图通过ajax发布一些数据到我们的后端API,但是json数据中的数组被jquery变成了奇怪的东西…例如,后端(python)将jquery ajax数据视为两个列表的字典
{'subject': ['something'], 'members[]': ['joe','bob']}
而不是
{'subject':'something','members':['joe','bob']}
从react组件中提取的HTML表单:
<div class="the_form">
<form onSubmit={this.handleSubmit}>
<input type="textarea" ref="members" placeholder="spongebob, patrick" />
<input type="submit" value="Add Thread" />
</form>
</div>
jquery ajax代码:
$.ajax({
beforeSend: function(xhr, settings) {
// csrf validation
},
url: this.props.url,
dataType: 'json',
type: 'POST',
data: {subject: "something", members: ["joe","bob"]},
success: function(data) {
this.setState({data: data});
}.bind(this),
error: function(xhr, status, err) {
console.log(this.props.url, status, err.toString());
}.bind(this)
});
但是,我能够使用httpie(简单的http命令行客户端)适当地发出这样的请求:
echo '{"subject":"something", "members":["joe","bob"]}' | http --auth test:test POST localhost:8000/api/some_page/ --verbose
我在javascript请求中可能做错了什么,以至于输入进入服务器的方式与预期不同?
在调用ajax函数之前尝试将对象字符串化
JSON.stringify({subject: "something", members: ["joe","bob"]})
试试这个
data: {subject: "something", members: ["joe","bob"]},
然后在后台
request.POST.getlist('members[]')
如果你想使用application/json
作为contentType
.那么试试这个
data: JSON.stringify({subject: "something", members: ["joe","bob"]}),
contentType: 'application/json; charset=utf-8',
在后台,
json.loads(request.body)['members']
相关文章:
- 函数参数中的数据与指定变量之间的任何性能差异
- 使用Express捕获参数
- 参数变量出现ngTable指令问题
- AngularJS:我可以跳过函数参数回调吗
- 如何使用skip参数使用angular ui引导进行服务器端分页
- 如何在JavaScript中获取字符串表示的参数数组
- JavaScript onClick 参数表示未定义变量
- 如何从控制器获取表示 ngRepeat 中元素的 HTML 节点的参数
- 在JavaScript点表示法中使用函数参数
- 什么是使用 JSON 表示命令行参数的好方法
- 如何在jquery ajax请求的data参数中表示json数组?
- JSHint表示“参数类型不匹配”;对于jQuery(这个)
- 从中间件传递参数到表示路由器
- 为什么bind似乎将参数表示为数组?
- 传递函数作为参数-数组表示法
- 将别名查询字符串表示为参数
- 节点表示虚荣url路径参数与排除
- 用撇号表示的JavaScript函数参数
- 匿名函数中的参数在命名函数中表示的内容
- Backbone JS:集合视图中表示模型的参数从何而来?