Javascript回调-以错误的顺序执行
我正在写一个脚本,这是上传文件。我想在上传之前检查文件是否存在,然后最后通牒将为用户提供覆盖选项 我已将代码从正常流程中删除,以确保另一个问题不会影响它 我将文件名传递给函数,函数将使用ajax运行php脚本并返回结果 我希望在回调中返回此结果,并继续处理 我添加了警报,显示了我希望它们发射的顺序(1,2,3),但它们发射的顺序不同(1,3,2) 请帮忙Javascript回调-以错误的顺序执行,javascript,callback,Javascript,Callback,我正在写一个脚本,这是上传文件。我想在上传之前检查文件是否存在,然后最后通牒将为用户提供覆盖选项 我已将代码从正常流程中删除,以确保另一个问题不会影响它 我将文件名传递给函数,函数将使用ajax运行php脚本并返回结果 我希望在回调中返回此结果,并继续处理 我添加了警报,显示了我希望它们发射的顺序(1,2,3),但它们发射的顺序不同(1,3,2) 请帮忙 function Test() { FileExists("Faces.png", f
function Test() {
FileExists("Faces.png", function() {
alert("3");
});
}
function FileExists(Filename, callback)
{
var res;
var Obj = new Object();
Obj.function = 'FileExists';
Obj.Filename = Filename;
alert("1");
$.ajax({
url: "upload.php",
dataType: "text",
type: "POST",
data: Obj,
cache: false,
success: function (data) {
alert("2");
if (data == "1")
res = true;
else
res = false;
},
error: function (xhr, ajaxOptions, thrownError) {
alert(xhr.status);
alert(thrownError);
res= false;
}
});
if(callback) callback(res);
}
您的回调需要在success和error函数中执行:
//Initialize callback with an empty function if not provided
callback = callback || function() {};
$.ajax({
url: "upload.php",
dataType: "text",
type: "POST",
data: Obj,
cache: false,
success: function (data) {
alert("2");
if (data == "1")
callback(true);
else
callback(false);
},
error: function (xhr, ajaxOptions, thrownError) {
alert(xhr.status);
alert(thrownError);
callback(false);
}
});
目前的执行方式如下:
FileExists
被调用callback
被选中,如果它存在,则使用res
调用它,此时未定义