我有这个ajax上传代码,用于发送数据,说明上传是否成功。但是它只知道文件是否没有错误,并且一旦文件已经上传就被移动到目标路径,如果上传在完成之前终止,则不会返回任何数据。有没有一种方法可以监听上传意外终止的时刻并提醒页面?
$('#send').click(function() {
var fileInput = $('#file')[0];
var data = new FormData();
for(var i = 0; i < fileInput.files.length; ++i){
data.append('file[]',fileInput.files[i]);
}
$.ajax({
type:'POST',
method:'POST',
url:'upload.php',
headers:{'Cache-Control':'no-cache'},
data:data,
contentType:false,
processData:false,
success: function(response){
var return_data = response;
if(return_data !== 'success') {
$('#status').html('uploaded');
}
else if(return_data == 'success') {
$('#status').html('upload failed');
}
}
});
});
并在upload.php中:
if($_FILES['file']['error'][$key] == 0
&& move_uploaded_file($_FILES['file']['tmp_name'][$key],"video/test/$name")){
echo "success";
}else{
echo "failed";
答案 0 :(得分:2)
在error
选项对象中添加$.ajax
方法。
答案 1 :(得分:1)
$ .ajax的一个参数是错误。如果页面未返回状态200,您可以指定要运行的函数。
来自jquery docs(http://api.jquery.com/jQuery.ajax/)
“错误 类型:函数(jqXHR jqXHR,String textStatus,String errorThrown) 请求失败时要调用的函数。该函数接收三个参数:jqXHR(在jQuery 1.4.x,XMLHttpRequest中)对象,描述发生的错误类型的字符串和可选的异常对象(如果发生)。第二个参数的可能值(除了null)是“timeout”,“error”,“abort”和“parsererror”。发生HTTP错误时,errorThrown会收到HTTP状态的文本部分,例如“Not Found”或“Internal Server Error”。从jQuery 1.5开始,错误设置可以接受一系列函数。每个函数将依次调用。注意:不会为跨域脚本和JSONP请求调用此处理程序。这是一个Ajax事件。“
答案 2 :(得分:1)
$('#send').click(function() {
var fileInput = $('#file')[0];
var data = new FormData();
for(var i = 0; i < fileInput.files.length; ++i){
data.append('file[]',fileInput.files[i]);
}
$.ajax({
type:'POST',
method:'POST',
url:'upload.php',
headers:{'Cache-Control':'no-cache'},
data:data,
contentType:false,
processData:false,
beforeSend: function(response){
// before send do some func if u want
},
success: function(response){
var return_data = response;
if(return_data !== 'success') {
$('#status').html('uploaded');
} else if(return_data == 'success') {
$('#status').html('upload failed');
}
},
complete: function(response){
// do some func after complete if u want
},
error: function(response){
// here is what u want
alert ("Error: " + response.statusText);
},
});
// end ajax call
});