【发布时间】:2020-11-08 19:51:36
【问题描述】:
我有这个 ajax 调用,它将数据从输入元素发送到服务器
function upload_files() {
let form_data = new FormData($('#form_upload')[0]); // wieso [0] ? == alle inputs auf einmal
$.ajax({
type: 'POST',
url: '/receave_files_lambda',
data: form_data,
contentType: false,
cache: false,
processData: false,
dataType: "json", //
success: flask_return_data => insertdata(flask_return_data)//
});
}
成功返回一个Json字符串,
如果调用成功,我想附加回调函数
通过使用done()解耦成功函数
$(function (){
$("#do_upload").on("click", function (){
let ajax_promise = upload_files();
ajax_promise.done(function (data){
console.log(data);
})
})
});
function upload_files () {
}
这给了我一个
Uncaught TypeError: Cannot read property 'done' of undefined
导致错误的原因是什么?
【问题讨论】:
-
你可以在
$.ajax()的返回值上调用done()。你没有用那个价值做任何事情。您没有return的upload_files_lab()语句,因此它返回undefined。您还没有包含upload_files()(尽管我认为这是另一个错字)。如果你想在你调用它的函数之外对$.ajax的返回值做一些事情,你需要返回它。 -
奇怪的是你没有收到
Uncaught ReferenceError: upload_files is not defined错误 -
@AlonEitan 是一个错字
-
所以现在只需添加
return $.ajax({ ....就可以了
标签: javascript jquery ajax promise