错误的POST请求,使用Ajax的GET没有返回值

时间:2019-04-29 18:36:44

标签: javascript jquery json ajax django

我有将post数据发送到django服务器并使用ajax从其中获取数据的代码。当我使用post方法时,服务器会以Bad Request: /quizzes/ [29/Apr/2019 18:13:42] "POST /quizzes/ HTTP/1.1" 400 83进行响应 并且在ajax代码中不返回任何信息,也不是错误也不完整。

当我尝试get来自服务器的数据时,服务器说可以 [29/Apr/2019 18:19:57] "GET /quizzes/ HTTP/1.1" 200 249 但是代码只输入了错误,并完成了包含错误消息的块,仅出现“状态错误:错误”

另一个问题是当请求结束时,我的Firefox重新加载了页面,但我不知道为什么

那么有人可以提出解决这些问题的建议吗?!

这是我的post方法的Ajax代码,没有响应 服务器期望以这种格式接收json对象

{
'title': "superheroes java",
'pass_score': 1,
'num_of_questions': 3,
'expected_duration': 10,
'skill_type': {"name": "java"},
}

这是我格式化和发送的方式

  $("#add-quiz").click(function () {
        quizData = {
            title: $("#quizTitle").val(),
            pass_score: Number($("#quizPassScore").val()),
            num_of_questions: Number($("#quizNumQuestions").val()),
            expected_duration: Number($("#quizDuration").val()),
            skill_type: {name: $("#quizSkillType").val()}
        };
        response = ""
        $.ajax({
            url: "http://127.0.0.1:8001/quizzes/",
            dataType: "json",
            method: "POST",
            data: quizData,
            success: function () {
               response = "success";
            }, error: function (jqXHR, textStatus, errorThrown) {
                console.log(jqXHR, textStatus, errorThrown);
            }, complete: function (request, status) {
                alert("Error with status: " + status);
            }
        });
        alert(response);
    });

这是get方法,它表示Error with status: error

 response = "";
        $.ajax({
            url: "http://127.0.0.1:8001/quizzes/",
            method: "GET",
            success: function (data) {
                response = data;
            }, error: function (XMLHttpRequest, textStatus, errorThrown) {
                console.log("Status: " + textStatus + "Error: " + errorThrown);

            }, complete: function (request, status) {
                console.log("Error with status: " + status);
            }
        });
        alert(response);

我只是使用respone进行进一步的测试

1 个答案:

答案 0 :(得分:1)

问题是跨域资源共享被禁用。我们能够解决该问题,将所需的配置添加到服务器以允许它们。

服务器使用了DJANGO,因此我们遵循的步骤就是此question的答案