刚开始用的jq的ajax里面xhr对象绑定onprogress事件的办法,只触发了一次,以为是jq的问题
var xhrOnProgress=function(fun) {
xhrOnProgress.onprogress = fun;
return function() {
$.ajaxSettings.xhr();
var xhr = $.ajaxSettings.xhr();
if (typeof xhrOnProgress.onprogress !== 'function')
return xhr;
if (xhrOnProgress.onprogress && xhr.upload) {
xhr.upload.onprogress = xhrOnProgress.onprogress;
}
return xhr;
}
}
var formData = new FormData(document.forms[0]);
$.ajax({
url : url,
type : 'POST',
data : formData, //不处理表单数据
processData : false, //不处理
contentType : false,
beforeSend:function(){ console.log("start transfer"); },
success : function(responseStr) { console.log(responseStr); },
error : function(responseStr) { console.log("error"); },
xhr:xhrOnProgress(function(e){
var percent=e.loaded / e.total;//计算百分比
})
});
为什么progress事件只触发了一次,不是不停的触发吗,都准备用这个写进度条的
var xhr=new XMLHttpRequest();
xhr.onreadystatechange=function(){
console.log(xhr.responseText);
}
xhr.onprogress=function(e){
console.log(xhr);
console.log(e)
console.log(e.loaded);
}
xhr.open('get','http://127.0.0.1:8080/db',true);
xhr.send();
我看各种文档api也都是说ajax上传和下载过程中,会在服务器指定时间间隔触发progress事件。
是支持下载的,但是我的为什么不行,我纯粹原生js写的ajax也是不行。是还有哪些参数要设置吗,求指教
请求的json,数据很大,用时我看了估计有20秒左右,所以也不是文件大小问题
你传的多大的文件,如果文件很小,一次就传完了, 只会触发一次