Jquery beforeSend xhr对象:未捕获类型错误:无法读取未定义的属性“addEventListener”
我不断地发现这个错误: 未捕获的TypeError:无法读取未定义的属性“addEventListener” 我正在尝试应用进度事件侦听器的位置 为什么我会犯这个错误Jquery beforeSend xhr对象:未捕获类型错误:无法读取未定义的属性“addEventListener”,jquery,ajax,jsfiddle,xmlhttprequest,Jquery,Ajax,Jsfiddle,Xmlhttprequest,我不断地发现这个错误: 未捕获的TypeError:无法读取未定义的属性“addEventListener” 我正在尝试应用进度事件侦听器的位置 为什么我会犯这个错误 <script type="text/javascript"> $(document).ready(function(){ $("#wb_bc_file_field").change(function(){ var formdata = new FormData();
<script type="text/javascript">
$(document).ready(function(){
$("#wb_bc_file_field").change(function(){
var formdata = new FormData();
formdata.append("video",$("#wb_bc_file_field")[0]);
// Start Ajax Call
$.ajax({
url:"server.php",
beforeSend:function(xhr){
xhr.upload.addEventListener("progress", function(event){
});
},
processData:false,
contentType:"multipart/form-data; charset=UTF-8",
data:formdata
}).done(function(){
console.log("Request is complete.");
}).fail(function(){
console.log("Request has failed.");
}).always(function(){
console.log("Request has closed.");
}); // End .ajax
}); // End .change
}); // End .ready
</script>
下面是整个脚本的一个示例。由于没有php文件,它将给出一个错误,但现在还可以。我认为错误是由于在启动XHR请求之前调用upload事件造成的
$.ajax({
url:"server.php",
beforeSend:function(xhr){
xhr.upload.addEventListener("progress", function(event){
});
},
...
正如在代码中一样,我们在beforeSend中调用xhr.upload.addEventListenerprogress。由于我们尚未启动请求,因此我们处于beforeSend状态,因此无法拥有任何xhr.upload对象。我们可以通过将代码移动到xhr而不是beforeSend来解决这个问题
注意:您需要jQuery版本>1.5.1
这是文档:我也想知道!
$.ajax({
url:"server.php",
xhr: function()
{
var xhr = new window.XMLHttpRequest();
//Upload progress
xhr.upload.addEventListener("progress", function(evt){
...
}, false);
return xhr;
},