Javascript 我需要帮助:AJAX请求错误网::ERR\u太多\u重定向
我的Chrome扩展的许多用户报告了此错误。问题是我不能解决它。原因之一是它在我的电脑上运行良好 这是引起问题的一页Javascript 我需要帮助:AJAX请求错误网::ERR\u太多\u重定向,javascript,jquery,ajax,google-chrome,google-chrome-extension,Javascript,Jquery,Ajax,Google Chrome,Google Chrome Extension,我的Chrome扩展的许多用户报告了此错误。问题是我不能解决它。原因之一是它在我的电脑上运行良好 这是引起问题的一页 // napravi glavni objekat - main let main = {}; // napravi prazan niz u koji treba uneti valute let coins = []; chrome.storage.local.get('main', e => { if(e.main){ main =
// napravi glavni objekat - main
let main = {};
// napravi prazan niz u koji treba uneti valute
let coins = [];
chrome.storage.local.get('main', e => {
if(e.main){
main = e.main
if(main.timestamp){
let time_difference = Math.floor((new Date().getTime() - main.timestamp) / 1000);
if(time_difference > 150){
// pokreni glavnu funkciju prvi put
check_convert_and_get_json();
}
}
}
else{
// pokreni glavnu funkciju
check_convert_and_get_json();
}
});
// glavna petlja koja se poziva u odredjenom vremenskom intervalu
setInterval(() => {
chrome.storage.local.get('main', e => {
if(e.main) main = e.main;
let time_difference = Math.floor((new Date().getTime() - main.timestamp) / 1000);
if(time_difference >= 301){
// pokreni glavnu funkciju
check_convert_and_get_json();
}
});
}, 15000);
function check_convert_and_get_json(){
// dohvati objekat convert
chrome.storage.local.get('convert', (e) => {
// ukoliko objekat konvert postoji, unesi ga u objekat main
main['convert'] = e.convert ? e.convert : false;
// u zvisnosti da li je korisnik podesio objekat convert, odredi URL za kripto-valute
let coins_url = e.convert ? "https://api.coinmarketcap.com/v1/ticker/" + "?convert=" + e.convert + '&limit=0' : 'https://api.coinmarketcap.com/v1/ticker/?limit=0';
// u zvisnosti da li je korisnik podesio objekat convert, odredi URL za celokupno trziste
let market_url = e.convert ? "https://api.coinmarketcap.com/v1/global/" + "?convert=" + e.convert : 'https://api.coinmarketcap.com/v1/global/';
// dohvati JSON
get(coins_url, market_url);
});
}
function get(coins_url, market_url){
grab_data(coins_url)
.then(data => {
coins = [];
// na osnovu dobijenog JSON objekta, izvuci potrebne podatke o valutama
create_coins_object_inside_main_object(data);
})
.then(() => {
// podesi trenutno vreme kako bi znali kada su rezultati poslednji put osvezeni
let timestamp = new Date();
// unesi timestam u objekat main
main['timestamp'] = timestamp.getTime();
grab_data(market_url)
.then((data) => {
// na osnovu dobijenog JSON objekta, izvuci potrebne podatke o trzistu
create_market_cap_object_inside_main_object(data);
})
.then(() => {
// sacuvaj objekat main
chrome.storage.local.set({main}, function(){});
})
.catch(() => {
// sacuvaj objekat main
chrome.storage.local.set({main}, function(){});
});
});
}
function create_market_cap_object_inside_main_object(data){
let market = JSON.parse(data);
main['market_cap'] = {'total_market_cap_usd': market.total_market_cap_usd};
if(main.convert) main['market_cap']['total_market_cap_' + main.convert.toLowerCase()] = market['total_market_cap_' + main.convert.toLowerCase()];
}
function create_coins_object_inside_main_object(data){
JSON.parse(data)
.filter(coin => {
// prihvati samo one valute koje zadovoljavaju odredjene uslove
return coin.id && coin.name && coin.symbol && coin.price_usd && coin.price_btc && coin.percent_change_24h;
})
.forEach(coin => {
if(main.alerts){
if(main.alerts[coin.name.toLowerCase()]){
if(main.alerts[coin.name.toLowerCase()].max < coin['price_' + main.alerts[coin.name.toLowerCase()].cur]){
chrome.notifications.create({
type: 'basic',
title: 'Green Alert',
message: 'Price of ' + coin.name + ' is above selected value.',
iconUrl: 'alert_up.png',
priority: 2,
requireInteraction: true
})
}
if(main.alerts[coin.name.toLowerCase()].min > coin['price_' + main.alerts[coin.name.toLowerCase()].cur]){
chrome.notifications.create({
type: 'basic',
title: 'Red Alert',
message: 'Price of ' + coin.name + ' is below selected value.',
iconUrl: 'alert_down.png',
priority: 2,
requireInteraction: true
})
}
}
}
// na osnovu odredjenih parametara popuni coins niz
populate_empty_object_and_push_it_to_coins_array(coin);
});
main['coins'] = coins;
}
function NotificationOptions(type, iconURL, title, message){
this.type = type;
this.iconURL = iconURL;
this.title = title;
this.message = message;
}
function populate_empty_object_and_push_it_to_coins_array(coin){
// kreiraj prazan objekat koji zatim treba dodati na coins niz
let empty = {};
empty['id'] = coin.id;
empty['name'] = coin.name;
empty['symbol'] = coin.symbol;
empty['price_usd'] = coin.price_usd;
// proveri da li postoji konverzija u drugu valutu i obavi odgovarajucu radnju
if(main.convert) empty['price_' + main.convert.toLowerCase()] = coin['price_' + main.convert.toLowerCase()];
empty['price_btc'] = coin.price_btc;
empty['percent_change_24h'] = coin.percent_change_24h;
coins.push(empty);
}
function grab_data(url){
return new Promise(function(resolve, reject) {
var http = new XMLHttpRequest();
http.onload = () => {
if(http.readyState == 4 && http.status == 200){
resolve(http.response);
}
else{
reject(http.status);
}
}
http.onerror = () => {
reject(http.status);
}
http.open('get', url);
http.send();
});
}
//napravi glavni objekat-main
让main={};
//napravi prazan niz u koji treba uneti Valuete
让硬币=[];
chrome.storage.local.get('main',e=>{
如有(e.main){
main=e.main
if(主时间戳){
让时间差=Math.floor((new Date().getTime()-main.timestamp)/1000);
如果(时差>150){
//pokreni glavnu funkciju prvi put
选中转换和获取json();
}
}
}
否则{
//pokreni glavnu funkciju
选中转换和获取json();
}
});
//国际货币基金组织
设置间隔(()=>{
chrome.storage.local.get('main',e=>{
如果(e.main)main=e.main;
让时间差=Math.floor((new Date().getTime()-main.timestamp)/1000);
如果(时差>=301){
//pokreni glavnu funkciju
选中转换和获取json();
}
});
}, 15000);
函数检查\u convert\u和\u get\u json(){
//dohvati-objekat转换
chrome.storage.local.get('convert',(e)=>{
//乌科利科·奥布杰卡特河下游,主要河流
main['convert']=e.convert?e.convert:false;
//您可以将您的产品转换为其他产品,并将其重新命名为kripto Valuete
让硬币_url=e.转换?”https://api.coinmarketcap.com/v1/ticker/“+”?convert=“+e.convert+”&limit=0”:”https://api.coinmarketcap.com/v1/ticker/?limit=0';
//你可以将你的目标转化为一个目标,并将其转化为一个目标
让市场_url=e.转换?”https://api.coinmarketcap.com/v1/global/“+”?convert=“+e.convert:”https://api.coinmarketcap.com/v1/global/';
//多瓦蒂JSON
获取(硬币地址、市场地址);
});
}
函数get(硬币地址、市场地址){
抓取数据(硬币url)
。然后(数据=>{
硬币=[];
//不适用于任何对象,也不适用于任何其他对象
在主对象(数据)内创建对象;
})
.然后(()=>{
//波德西·特伦努特诺·维雷梅·卡科·比兹纳利·卡达·苏雷祖尔塔蒂·波斯莱德尼把奥斯维泽尼放在一边
让时间戳=新日期();
//乌布杰卡特干管时间段
main['timestamp']=timestamp.getTime();
抓取数据(市场url)
。然后((数据)=>{
//不适用于任何对象,也不适用于其他对象
在主对象(数据)内创建市场、资本、对象;
})
.然后(()=>{
//sacuvaj-objekat干管
chrome.storage.local.set({main},function(){});
})
.catch(()=>{
//sacuvaj-objekat干管
chrome.storage.local.set({main},function(){});
});
});
}
函数create_market_cap_object_in_main_object(数据){
让market=JSON.parse(数据);
主要['market_cap']={'total_market_cap_usd':market.total_market_cap_usd};
如果(main.convert)main['market\u cap']['total\u market\u cap'+main.convert.toLowerCase()]=market['total\u market\u cap'+main.convert.toLowerCase()];
}
函数create\u coins\u object\u in\u main\u object(数据){
JSON.parse(数据)
.filter(硬币=>{
//prihvati samo one Valuete koje zadovoljavaju odredjene uslove
返回coin.id&&coin.name&&coin.symbol&&coin.price_usd&&coin.price_btc&&coin.percent_change_24小时;
})
.forEach(硬币=>{
如果(主警报){
if(main.alerts[coin.name.toLowerCase()){
if(main.alerts[coin.name.toLowerCase()].maxcoin['price_u'+main.alerts[coin.name.toLowerCase()].cur]){
chrome.notifications.create({
类型:“基本”,
标题:“红色警报”,
消息:“+coin.name+”的价格低于所选值。”,
iconUrl:'alert_down.png',
优先事项:2,
requireInteraction:正确
})
}
}
}
//奥斯诺夫·奥德雷杰尼(na osnovu odredjenih)是波普尼(popuni)的主要支持者
填充\u空\u对象\u并将其\u推送到\u硬币\u数组(硬币);
});
主要['coins']=硬币;
}
函数通知选项(类型、图标、标题、消息){
this.type=type;
this.iconURL=iconURL;
this.title=标题;
this.message=消息;
}
函数填充\u空\u对象\u并将\u推送\u到\u硬币\u数组(硬币){
//kreiraj prazan objekat koji zatim treba dodati na niz
设为空={};
空['id']=coin.id;
空['name']=coin.name;
空['symbol']=coin.symbol;
空['price_usd']=coin.price_usd;
//药品价格和药品价格的监管
如果(main.convert)为空['price_'+main.convert.toLowerCase()]=coin['price_'+main.convert.toLowerCase()];
空['price_btc']=coin.price_btc;
空['percent_change_24h']=coin.percent_change_