如何从金字塔中的帖子请求中检索json数据?

Cha*_*Gao 4 request 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
Run Code Online (Sandbox Code Playgroud)

JS:

$(function() {

    function get_updates () {
        data = JSON.stringify({'a':1});
        $.post('/updates.json', data, function(res) {
            });
        }, 'json').done(function() {

        });
    }

    get_updates();
});
Run Code Online (Sandbox Code Playgroud)

控制台显示self.request.params退货NestedMultiDict([('{"a":1}', u'')])

如何获取NestedMultiDict对象中的键和值?

如果我这样做self.request.params.getall("a"),它报告

KeyError: "Key not found: 'a'"
Run Code Online (Sandbox Code Playgroud)

如果我这样做self.request.json_body,它会报告

ValueError: No JSON object could be decoded
Run Code Online (Sandbox Code Playgroud)

Ser*_*gey 6

$.post()始终发送application/x-www-form-urlencoded内容类型的数据.使用$.ajax()与正确的内容类型发送数据:

$.ajax({
  url: url,
  type: "POST",
  data: data,
  contentType: "application/json; charset=utf-8",
  dataType: "json"
}).done(...);
Run Code Online (Sandbox Code Playgroud)

在金字塔方面request.json_body是正确的访问方式......好吧,请求的JSON正文.