Ajax-POST仅成功Async为false

时间:2017-08-24 08:58:11

标签: jquery ajax

我正在尝试将ajax调用到我的后端。 如果我设置async: false,但是如果我删除它失败并在错误部分返回undefined

它工作正常
 $.ajax({
        type: "POST",
        enctype: 'multipart/form-data',
        url: "http://localhost:8000/student/queue/create",
        data: data,
        processData: false,
        contentType: false,
        cache: false,
        timeout: 600000,
        success: function (data) {
            console.log("SUCCESS : ", data);

        },
        error: function (e) {
            console.log("ERROR : ", e.responseText);
            alert("ERROR : "+  e.responseText);

        }
    });

从按钮onclick

调用我的ajax函数
<button type="submit" id="submit-createqueue" class="btn feedback glass" onclick="sendformDataToBackend()">Submit</button>

我尝试了Ajax Call returns undefined when async is true,但也没有效果

function Call(data) {

    return $.ajax({
        url: "http://localhost:8000/student/queue/create",
        type: "POST",
        enctype: 'multipart/form-data',
        data: data,
        processData: false,
        contentType: false,
        cache: false,
        timeout: 600000,

        error: function (e) {
        console.log("ERROR : ", e.responseText);
        alert("ERROR : "+  e.responseText);
        }

    });
}

Call(data).then(function(data) {
    console.log(data);
    alert("test")
});

2 个答案:

答案 0 :(得分:1)

您需要停止单击提交按钮时也会发生的表单提交。它适用于async: false,因为它会在请求进行过程中阻止处理 - 这正是您不应该使用它的原因。

我还强烈建议您停止使用on*事件属性。改为使用不显眼的事件处理程序。

当您使用jQuery时,您可以使用以下代码实现这两个目标:

$('#yourFormElement').on('submit', function(e) {
  e.preventDefault();

  var data = // your logic to get form data here...

  $.ajax({
    type: "POST",
    enctype: 'multipart/form-data',
    url: "http://localhost:8000/student/queue/create",
    data: data,
    processData: false,
    contentType: false,
    cache: false,
    timeout: 600000,
    success: function (data) {
      console.log("SUCCESS : ", data);
    },
    error: function (e) {
      console.log("ERROR : ", e.responseText);
      alert("ERROR : " +  e.responseText);
    }
  });
});

答案 1 :(得分:0)

请尝试使用提交按钮替换的输入类型按钮