XMLHttpRequest:需要使用ajax中的成功和错误函数
XMLHttpRequest: need to use success and error functions from ajax
我有一个ajax post函数,当点击上传按钮时,文件被上传到服务器,服务器会发现任何错误,如果有错误,它会用req.end();
函数通知用户。问题是,从那以后,我转到了XMLHttpRequest()
(使用它提供的onprogress函数),但我仍然需要使用ajax中的成功和错误函数。有没有办法以某种方式将它们与XMLHttpRequest
一起使用?非常感谢。
这是我迄今为止的代码:
var xhrVideo = new XMLHttpRequest();
xhrVideo.open('POST', '/uploadVideo', true);
xhrVideo.upload.onprogress = function(e) {
if (e.lengthComputable) {
$('.videoProgress').html(((e.loaded / e.total) * 100).toFixed(0)+'%');
}
};
var videoForm = new FormData($('.videoUploadForm')[0]);
xhrVideo.send(videoForm);
还有ajax代码:
var videoData = new FormData($('.videoUploadForm')[0]);
$.ajax({
url: '/uploadVideo',
type: 'POST',
data: videoData,
cache: false,
contentType: false,
processData: false,
mimeType:"multipart/form-data",
success: function(data){
switch(data){
case '1':
alert('Wrong Video File Extension');
break;
case '2':
alert('Wrong Image File Type');
break;
}
},
error: function(data){
alert('Something went wrong! Please reload this page')
}
});
对load
和error
事件使用侦听器。
为成功事件添加侦听器的示例。
xhrVideo.addEventListener('load', function(e) {
注意:侦听器必须在send()函数之前添加
此外,我建议您阅读关于使用XMLHttpRequest()的整篇文章。
就我个人而言,我喜欢使用jquery ajax而不是纯javascript。。因此,您可以将xhr与ajax一起使用,并捕获进度和加载事件以及
xhr(默认值:ActiveXObject(IE),XMLHttpRequest否则)Type:Function()用于创建XMLHttpRequest的回调对象默认为ActiveXObject(IE)否则为XMLHttpRequest。重写以提供您自己的实现用于XMLHttpRequest或对工厂的增强。
在你的代码中,你可以像这样使用
$.ajax({
xhr: function(){
var xhr = new window.XMLHttpRequest();
//Upload progress
xhr.upload.addEventListener("progress", function(evt){
if (evt.lengthComputable) {
var percentComplete = (evt.loaded / evt.total) * 100;
//Do something with upload progress
$('.videoProgress').html(Math.round(percentComplete)+"% uploaded");
}
}
}, false);
xhr.upload.addEventListener("load", function(evt){
evt.preventDefault();
},false);
return xhr;
},
// reset of your ajax code
相关文章:
- 解析云代码错误:解析.错误{代码:141,消息:“未调用成功/错误”}
- 解析查询.首次成功/错误 间歇性不调用回调
- 未调用成功/错误
- 当 AJAX 响应成功时清除 jquery 成功/错误消息 span 类
- 在 AngularJS 中声明一个承诺,并带有命名的成功/错误回调
- JQuery - 不要在按钮成功/错误时添加悬停类
- jQuery:在成功/错误中使用延迟对象(ajaxSetup 选项)
- 创建一个成功/错误的承诺,例如像ajax
- jquery.couchdb.js Ajax 成功/错误未被调用
- 未调用成功/错误 - 解析代码 141
- 处理开机自检后从 Angular 控制器到指令的成功/错误 DOM 操作
- node.js未找到解析成功/错误,未定义响应
- 使用JQuery以不可见的方式调用URL并返回成功/错误标志
- 解析云代码嵌套查询时未调用代码141成功/错误消息
- 表单提交的成功/错误信息没有显示
- 如何绑定引导加载按钮成功/错误在表单提交
- Ajax响应给出数据成功错误
- 在'fetch'之后没有调用成功/错误回调;(Backbone.Collection)
- 主干:正确的传递方式'this'在成功/错误回调中引用匿名函数
- jquery' ajax的哪个部分(成功/错误)接收到重定向状态码?