Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我需要帮助:AJAX请求错误网::ERR\u太多\u重定向_Javascript_Jquery_Ajax_Google Chrome_Google Chrome Extension - Fatal编程技术网

Javascript 我需要帮助:AJAX请求错误网::ERR\u太多\u重定向

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 =

我的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 = 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_