Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.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 JSONP和401响应_Javascript_Html_Jsonp - Fatal编程技术网

Javascript JSONP和401响应

Javascript JSONP和401响应,javascript,html,jsonp,Javascript,Html,Jsonp,您好,我正在尝试在我的网页上使用JSONP,并使用javascript生成以下代码: <script src="https://{{ username }}:{{ password }}@www.link.com/api/2/project/link/resource/core/stats/?callback=updateStats&amp;random=1343727774180" id="jsonp"></script> 这是使用下面的代码生成的 fun

您好,我正在尝试在我的网页上使用JSONP,并使用javascript生成以下代码:

<script src="https://{{ username }}:{{ password }}@www.link.com/api/2/project/link/resource/core/stats/?callback=updateStats&amp;random=1343727774180" id="jsonp"></script>

这是使用下面的代码生成的

function handleRefresh(url) {
    console.log("here");

    var newScriptElement = document.createElement("script");
    newScriptElement.setAttribute("src", url);
    newScriptElement.setAttribute("id", "jsonp");
    var oldScriptElement = document.getElementById("jsonp");
    var head = document.getElementsByTagName("head")[0];
    if (oldScriptElement == null) {
        head.appendChild(newScriptElement);
    }
    else {
        head.replaceChild(newScriptElement, oldScriptElement);
    }
}

function updateStats(stats) {
    var salesDiv = document.getElementById("stats");
    var newData = [];
    if(!stats){
        alert("need to log in");
    }else{
        alert("ok");
    }
    for ( var s in stats )
    {
            var data = stats[s];
            data.language = s;
            newData.push(data.language);
        }       


    for (var i = 0; i < newData.length; i++) {
        var glossa = newData[i];
        var stat = stats[glossa];

        var div = document.createElement("div");
        div.setAttribute("id", "progressbar");
        var indicator = document.createElement("label");
        indicator.setAttribute("id","indicator");

        var checkbox = document.createElement('input');
        checkbox.type = "checkbox";
        checkboxname = glossa;
        checkbox.value = "value";
        checkbox.id = "id";

        glossesArray[i]=glossa;

        div.appendChild(checkbox);
        div.appendChild(indicator);

        var zaab = parseInt(stat.completed, 10);
            //console.log(zaab);

        if(zaab < 35){
            indicator.innerHTML = glossa;
        }else{
            indicator.innerHTML = glossa + " : " + stat.completed;
            } 
        indicator.style.width = stat.completed;
        //indicator.innerHTML = glossa + " : " + stat.completed;

        if (salesDiv.childElementCount == 0) {
            salesDiv.appendChild(div);
        }
        else {
            salesDiv.insertBefore(div, salesDiv.firstChild);
        }

    }
            //alert(zaab);

    if (stats.length > 0) {
        lastReportTime = stats[stats.length-1].time;


    }
}
函数句柄刷新(url){
console.log(“此处”);
var newScriptElement=document.createElement(“脚本”);
setAttribute(“src”,url);
setAttribute(“id”、“jsonp”);
var oldScriptElement=document.getElementById(“jsonp”);
var head=document.getElementsByTagName(“head”)[0];
if(oldScriptElement==null){
head.appendChild(newScriptElement);
}
否则{
head.replaceChild(newScriptElement、oldScriptElement);
}
}
函数updateStats(stats){
var salesDiv=document.getElementById(“stats”);
var newData=[];
如果(!stats){
警报(“需要登录”);
}否则{
警报(“正常”);
}
用于(统计中的var s)
{
var数据=统计数据[s];
data.language=s;
newData.push(data.language);
}       
对于(var i=0;i0){
lastReportTime=stats[stats.length-1]。时间;
}
}

问题是,如果我在收到未经授权的响应(401)之前没有登录,那么我如何读取收到的响应?

您可以设置“callback=updateStats”。现在将函数添加到js中

function updateStats(response){
 // do something with response
} 

问题是,如果响应为401,则函数永远不会被调用!所以我在里面什么都做不了!如果我得到我的json数据,那么函数就被称为normall!但是你需要(如果是401)过程响应吗?那又怎样?但你需要这个做什么?检查,服务器是否返回401响应?更多细节,plz