我正在尝试将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")
});
答案 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)
请尝试使用提交按钮替换的输入类型按钮