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

时间:2014-06-24 02:19:40

标签: 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

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

1 个答案:

答案 0 :(得分:6)

$.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正文。