jQuery.ajax returns 400 Bad Request

前端 未结 5 1636
伪装坚强ぢ
伪装坚强ぢ 2020-12-09 10:06

This works fine:

jQuery(\'#my_get_related_keywords\').click(function() {
    if (jQuery(\'#my_keyword\').val() == \'\') return false;
        jQuery.getJSON(         


        
5条回答
  •  时光说笑
    2020-12-09 10:25

    I was getting the 400 Bad Request error, even after setting:

    contentType: "application/json",
    dataType: "json"
    

    The issue was with the type of a property passed in the json object, for the data property in the ajax request object.
    To figure out the issue, I added an error handler and then logged the error to the console. Console log will clearly show validation errors for the properties if any.

    This was my initial code:

    var data = {
        "TestId": testId,
        "PlayerId": parseInt(playerId),
        "Result": result
    };
    
    var url = document.location.protocol + "//" + document.location.host + "/api/tests"
    $.ajax({
        url: url,
        method: "POST",
        contentType: "application/json",
        data: JSON.stringify(data), // issue with a property type in the data object
        dataType: "json",
        error: function (e) {
            console.log(e); // logging the error object to console
        },
        success: function () {
            console.log('Success saving test result');
        }
    });
    

    Now after making the request, I checked the console tab in the browser development tool.
    It looked like this:

    responseJSON.errors[0] clearly shows a validation error: The JSON value could not be converted to System.String. Path: $.TestId, which means I have to convert TestId to a string in the data object, before making the request.

    Changing the data object creation like below fixed the issue for me:

    var data = {
            "TestId": String(testId), //converting testId to a string
            "PlayerId": parseInt(playerId),
            "Result": result
    };
    

    I assume other possible errors could also be identified by logging and inspecting the error object.

提交回复
热议问题