在 Pyramid :
class ProjectorViews(Layouts):
def __init__(self, request):
self.request = request
@view_config(renderer="json", name="updates.json", request_method="POST")
def updates_view(self):
print self.request.params
JS :
$(function() {
function get_updates () {
data = JSON.stringify({'a':1});
$.post('/updates.json', data, function(res) {
});
}, 'json').done(function() {
});
}
get_updates();
});
控制台显示
self.request.params
返回 NestedMultiDict([('{"a":1}', u'')])
如何获取 中的键和值NestedMultiDict 目的?
如果我这样做
self.request.params.getall("a")
,它报告KeyError: "Key not found: 'a'"
如果我这样做
self.request.json_body
,它报告ValueError: No JSON object could be decoded
最佳答案
$.post()
总是用 application/x-www-form-urlencoded
发送数据内容类型。使用 $.ajax()
以正确的内容类型发送数据:
$.ajax({
url: url,
type: "POST",
data: data,
contentType: "application/json; charset=utf-8",
dataType: "json"
}).done(...);
在 Pyramid 一侧
request.json_body
是正确的访问方式……好吧,请求的 JSON 正文。
关于request - 如何从 Pyramid 中的 post 请求中检索 json 数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24377380/