使用Django Rest框架的ajax脚本中的JSON解析错误



我使用的是django rest框架。我的视图响应是好的,但当我使用ajax提交我的视图时,它给了我一个错误json解析错误。

Here is my views.py file:
@api_view(['GET', 'POST'])
@parser_classes([JSONParser])
def signup(request, format=None):
if request.method == 'POST':
data = JSONParser().parse(request)
username = data.get('username')
first_name = data.get('first_name')
last_name = data.get('last_name')
email = data.get('email')
password = data.get('password')
gender = data.get('gender')
birth_date = data.get('birth_date')
serializer = UserSerializer(data=data)
if serializer.is_valid():
user = User.objects.create_user(username=username,first_name=first_name,last_name=last_name,email=email,gender=gender,birth_date=birth_date)
user.set_password(password)
user.save()
data = {'result': 'success', 'message':'You have registered successfully now you can login'}
return Response(data=data, status=201)
elif not serializer.is_valid():
data = { 'result': 'error', 'message':serializer.errors}
return Response(data=data)
if not request.user.id and request.method == 'GET':
return render(request, 'sessionauthapp/signup.html')
我的ajax js脚本:
var frm = $('#signupform');
var token = '{{csrf_token}}';
$('#signupform').on('submit', function(e) {
e.preventDefault();
$.ajax({
headers: { "X-CSRFToken": token },
url: '/signup/',
type: 'post',
data: $(this).serialize(),
dataType: "json",
contentType: "application/json",
success: function(data) {
console.log(data);

},
error: function(data) {
}
});
return false;
});

我的ajax脚本给了我一个错误,如json parse error,但我的视图响应是好的。

This is my question and i solved it here is my valid script Firstly, convert my form data into json serialize objects with the help of each() and Json.stringify with respective names and values of form:

var frm = $('#signupform');
var token = '{{csrf_token}}';
$('#signupform').on('submit', function(e) {
e.preventDefault();
var formDataObj = {};
(function() {
frm.find(":input").not("[type='submit']").not("[type='reset']").each(function() {
var thisInput = $(this);
formDataObj[thisInput.attr("name")] = thisInput.val();
});
})();
$.ajax({
headers: { "X-CSRFToken": token },
url: '/signup/',
method: 'post',
// data: $(this).serialize(),
data: JSON.stringify(formDataObj),
dataType: "json",
contentType: "application/json",
success: function(data) {
console.log(data);

},
error: function(data) {
}
});
return false; });

最新更新