2014-06-24 3 views
3

피라미드 에서 :Pyramid의 게시물 요청에서 json 데이터를 가져 오는 방법은 무엇입니까?

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 

답변

5

$.post() 항상 application/x-www-form-urlencoded 콘텐츠 형식으로 데이터를 전송보고합니다. 올바른 콘텐츠 형식으로 데이터를 전송하는 $.ajax()를 사용

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

을 피라미드 측 request.json_body에하는 것은 물론 ... 액세스 할 수있는 올바른 방법, 요청의 JSON 본문입니다.

관련 문제