Я пытаюсь отправить HTTP-запрос на загрузку файлов JSON для моей программы.Однако он непрерывно загружает последний файл JSON без остановки.У меня есть как минимум 6 JSON-файлов и 1 JS-файл для загрузки, и только последняя загрузка JSON-файла достигает 5000+, и он все еще не останавливается.Как мне остановить отправку HTTP-запроса при загрузке необходимых файлов?
Сначала я подумал, что он рекурсивно вызывает обратный вызов ошибки, поэтому я попытался удалить вызов функции ошибок.Я также попытался создать переменную, которая подсчитывает количество загруженных файлов, чтобы я мог остановить HTTP-запрос, когда достигнут максимальный загруженный файл.
Вот мой код:
// Build the URL to query
attrs['url'] = url+(qs ? '?'+qs:'');
if(attrs['dataType']=="jsonp"){
var script = document.createElement('script');
script.src = attrs['url'];
document.body.appendChild(script);
return this;
}
// code for IE7+/Firefox/Chrome/Opera/Safari or for IE6/IE5
oReq = (window.XMLHttpRequest) ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
oReq.addEventListener("load", window[cb] || complete);
oReq.addEventListener("error", error);
oReq.addEventListener("progress", progress);
var responseTypeAware = 'responseType' in oReq;
if(attrs.beforeSend) oReq = attrs.beforeSend.call((attrs['this'] ? attrs['this'] : this), oReq, attrs);
function complete(evt) {
if(oReq.status === 200) {
attrs.header = oReq.getAllResponseHeaders();
var rsp = oReq.response || oReq.responseText;
if(attrs['dataType']=="json") try{rsp = JSON.parse(rsp.replace(/[\n\r]/g,"\\n").replace(/^([^\(]+)\((.*)\)([^\)]*)$/,function(e,a,b,c){ return (a==cb) ? b:''; }).replace(/\\n/g,"\n"))} catch(e){error(e);};
// Parse out content in the appropriate callback
if(attrs['dataType']=="script"){
var fileref=document.createElement('script');
fileref.setAttribute("type","text/javascript");
fileref.innerHTML = rsp;
document.head.appendChild(fileref);
}
attrs['statusText'] = 'success';
if(typeof attrs.success==="function") attrs.success.call((attrs['this'] ? attrs['this'] : this), rsp, attrs);
}else{
attrs['statusText'] = 'error';
error(evt)
}
if(typeof attrs.complete==="function") attrs.complete.call((attrs['this'] ? attrs['this'] : this), rsp, attrs);
//Debugging purposes
console.log(attrs['url']);
}
function error(evt){
if(typeof attrs.error==="function") attrs.error.call((attrs['this'] ? attrs['this'] : this),evt,attrs);
}
function progress(evt){
if(typeof attrs.progress==="function") attrs.progress.call((attrs['this'] ? attrs['this'] : this),evt,attrs);
}
if(responseTypeAware && attrs['dataType']){
try { oReq.responseType = attrs['dataType']; }
catch(err){error(evt); }
}
try{oReq.open('GET', attrs['url']);}
catch(err){error(evt); }
try{ oReq.send();}
catch(err){error(evt); }
return this;
}
stuQuery.prototype.loadJSON = function(url,fn,attrs){
if(!attrs) attrs = {};
attrs.dataType = "json";
attrs.complete = fn;
this.ajax(url,attrs);
return this;
}
Еще одно замечание: он успешно загружает файл JSON, просто не прекращает загрузку.