gpt4 book ai didi

javascript - 在另一个 AJAX 调用中执行一个 AJAX 调用(无 jQUERY)

转载 作者:行者123 更新时间:2023-11-28 05:27:08 24 4
gpt4 key购买 nike

我正在使用第三方 API 将视频上传到该服务器。上传视频后,我会进行验证调用以检查所有文件是否已上传(“verifyUpload()”)。如果所有文件都已上传,那就太好了,否则我会从上传的最后一个字节恢复上传('resumeUpload()')。我遇到的问题是,我不明白为什么,我的“resumeUpload()”似乎没有执行 - 我是否编码错误?

在控制台中,我可以看到从resumeUpload() 执行的以下几行:

console.log('vim.resumeUpload() ...');

console.log('stringArgument: ' + stringArgument);

但不是这行:xmh.setRequestHeader('Content-Range', stringArgument);

正在被处决,我看到:xmh.setRequestHeader('Content-Range', '字节 /');

从 verifyUpload() 执行。

验证上传()

 // VERIFY UPLOAD (SO FAR)
var verifyUpload = function(){
console.log('verifying upload() ...');

var xmh = new XMLHttpRequest;

xmh.onreadystatechange = function(){

console.log('xmh.readyState111: ' + xmh.readyState);
console.log('xmh.status111: ' + xmh.status);

if(xmh.readyState == xmh.HEADERS_RECEIVED){
console.log('VERIFY RESPONSE HEADERS: ' + xmh.getAllResponseHeaders());
console.log('getResponseHeader(\'Content-Range\')' + xmh.getResponseHeader("Range"));

var range = xmh.getResponseHeader("Range");
var rangeArray = range.split('-');
var bytesUploaded = rangeArray[1];
bytesUploaded = Number(bytesUploaded);

var leftToUpload = vim.vidFileSize-bytesUploaded;
console.log('bytesUploaded: '+bytesUploaded);
console.log('byteLeftToUpload: '+ leftToUpload);

// IF ALL THE FILE HAS BEEN UPLOADED TO THE SERVER
// COMPLETE UPLOAD
if(leftToUpload == 0){
completeVidUpload();
}else{
// NEED TO RESUME UPLOAD FROM WHERE WE LAST LEFT OFF
vim.bytesToUploadFrom = bytesUploaded + 1;
var stringValue = 'bytes '+vim.bytesToUploadFrom+'-'+vim.vidFileSize+'/'+vim.vidFileSize+'';
console.log('stringValue: '+ stringValue);
resumeUpload(stringValue);
}
}
}
xmh.open('PUT', vim.upload_link_secure);
xmh.setRequestHeader('Content-Range', 'bytes */*');
xmh.send();
}

恢复上传():

 // RESUME UPLOAD WHERE LEFT OFF
var resumeUpload = function(stringArgument){
console.log('vim.resumeUpload() ...');
console.log('stringArgument: ' + stringArgument);

var xmh = XMLHttpRequest;

// SET EVENT LISTENERS
// SET EVENT LISTENERS
xmh.upload.addEventListener('progress', uploadProgres, false);
xmh.addEventListener('load', uploadComplete, false);
xmh.addEventListener('error',uploadError, false);

xmh.onreadystatechange = function(){
if(xmh.readyState == xmh.HEADERS_RECEIVED){
console.log('VERIFY RESPONSE HEADERS222: ' + xmh.getAllResponseHeaders());
console.log('getResponseHeader(\'Content-Range\')222' + xmh.getResponseHeader("Range"));
}
}
xmh.open('PUT', vim.upload_link_secure);
xmh.setRequestHeader('Content-Range', stringArgument);
xmh.send();

}

最佳答案

我认为您错过了 resumeUpload 中的 new:

var xmh = XMLHttpRequest;

关于javascript - 在另一个 AJAX 调用中执行一个 AJAX 调用(无 jQUERY),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40058294/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com