我发送以下格式的数据
$.ajax({
url: "http://localhost:8000/loginrest/",
data: JSON.stringify({'user':'admin','password':'zyz'}),
processData: false,
type: 'POST',
error: function(xhr, error){
console.debug(xhr); console.debug(error);
},
success: function(data){
alert(data);
}
});
相应的django代码:
class LoginView(APIView):
def get(self, request, format=None):
return Response({'detail': "GET Response"})
def post(self, request, format=None):
try:
data = request.DATA
except ParseError as error:
return Response(
'Invalid JSON - {0}'.format(error.detail),
status=status.HTTP_400_BAD_REQUEST
)
print(data)
print(request.POST)
try:
print(QueryDict(request.body).get('user'))
except:
print("error")
在终端
<QueryDict: {u'{"user":"admin","password":"zyz"}': [u'']}>
<QueryDict: {u'{"user":"admin","password":"zyz"}': [u'']}>
error
我的问题是解析这个绕过子串的任何简单方法 或者我在ajax中发送JSON时做错了什么?
答案 0 :(得分:0)
如果您只想获取数据:
/i
你已经发送了json数据,所以这应该可行。
答案 1 :(得分:0)
您没有JSON.stringify()
您为jQuery提供的数据,这就是您获得“双JSON”的原因。见例:
var postDataSth = JSON.stringify({asd: 123});
$.ajax({
url: 'http://url.com',
method: 'POST',
data: {
data1: postDataSth,
data2: 'KILLER_QUEEN',
foo: 'bar'
},
success: function (foo) {
if (foo) {
console.log(foo.bar);
}
},
error: function () {
console.warn('request failed!');
}
});