【问题标题】:JSON parse error in ajax script using Django Rest framework使用 Django Rest 框架的 ajax 脚本中的 JSON 解析错误
【发布时间】:2021-10-22 01:54:21
【问题描述】:

我正在使用 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 的错误,但我的意见响应是好的。

【问题讨论】:

  • 请求正文/数据? JSONParser().parse(request.body)JSONParser().parse(request.data)我只是在猜测,不知道哪个是哪个
  • 来自 ajax 脚本的相同错误,但我的响应是好的。

标签: javascript jquery django ajax django-rest-framework


【解决方案1】:
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; });

【讨论】:

    猜你喜欢
    • 2017-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-22
    • 2018-10-16
    • 2018-02-16
    • 2020-01-01
    相关资源
    最近更新 更多