Javascript getJson回调不起作用(这有什么问题?)

Javascript getJson回调不起作用(这有什么问题?),javascript,jquery,getjson,Javascript,Jquery,Getjson,我正在尝试使用一个API,它需要一个调用来获取带有基本HTTP身份验证的Json。我不擅长javascript 我拥有的代码是: <script type="text/javascript"> $.getJSON({ 'url': 'http://data.unistats.ac.uk/api/KIS/Institutions.JSON?pageIndex=1&pageSize=25', 'beforeSend': funct

我正在尝试使用一个API,它需要一个调用来获取带有基本HTTP身份验证的Json。我不擅长javascript

我拥有的代码是:

    <script type="text/javascript">

    $.getJSON({
        'url': 'http://data.unistats.ac.uk/api/KIS/Institutions.JSON?pageIndex=1&pageSize=25',
        'beforeSend': function(xhr) {
            xhr.setRequestHeader("Authorization",
                "Basic " + encodeBase64("ABCDEF" + ":" + password));
        },
        success: function(result) {
            alert('done');
        },
        error: function(result) {
            alert('no');
        }
    });
    </script>
这似乎不正确,因为它应该是: 授权:基本安全密钥

响应为405,方法不允许 重新加载页面以获取以下内容的源:

响应标题:

HTTP/1.1 405 Method Not Allowed
Cache-Control: private
Allow: GET
Content-Length: 1725
Content-Type: text/html; charset=UTF-8
Server: Microsoft-IIS/7.5
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Fri, 16 Aug 2013 21:00:11 GMT
当我从已设置的服务器尝试时

可以在这里看到:

部分解决方案

使用jsonp它会收到一个响应,但是没有附加头,因此我缺少身份验证

            <script type="text/javascript">


$(document).ready(function () {
jQuery.support.cors = true;
$.ajax({
        'type': "GET",
        'dataType': 'jsonp',
        'url': 'https://data.unistats.ac.uk/api/KIS/Institutions.JSON?pageIndex=1&pageSize=25',
        'beforeSend': function(xhr) {
            xhr.setRequestHeader("Authorization",
                "Basic " + btoa("AAA"));
                console.error("Basic " + btoa("AAA"));
        },
        success: function(result) {
            alert('done');
        },
        error: function(jqXHR, status, error){ console.log(status, error); }
    });
}
);      </script>   

$(文档).ready(函数(){
jQuery.support.cors=true;
$.ajax({
'类型':“获取”,
“数据类型”:“jsonp”,
“url”:”https://data.unistats.ac.uk/api/KIS/Institutions.JSON?pageIndex=1&pageSize=25',
“beforeSend”:函数(xhr){
xhr.setRequestHeader(“授权”,
“基本”+btoa(“AAA”);
控制台错误(“基本”+btoa(“AAA”);
},
成功:功能(结果){
警报(“完成”);
},
错误:函数(jqXHR,状态,错误){console.log(状态,错误);}
});
}
);         

不接受具有设置的对象。改为使用,并指定
数据类型:“json”
作为设置之一。

检查firebug控制台中是否已检查请求是否实际发送到服务器?还要检查您的服务器端方法是否接受“get”类型或“post”类型请求,或者两者都接受。您是从文件系统加载页面,还是从本地/远程http服务器加载页面?从
null
原点-看起来您正在加载文件系统。尝试加载http服务器。让我们看看这篇文章为php提供了一个服务器端的答案:我想你可以使用
$.ajaxSetup()
,然后调用
$.getJSON()
@Barmar:是的,这也是一个选项。不过,这会影响所有ajax调用,而不仅仅是这一次。谢谢,我已经尝试过了,我似乎比以前更进一步了。不幸的是,现在我得到了错误条件警报('no')。有什么好的调试方法吗?@NutterzUK:是的,通过
控制台。记录
传递给
错误的参数,而不仅仅是警告
。这样:
error:function(jqXHR,status,error){console.log(status,error);}
谢谢,我得到了“errorNo传输”。正如Faisal mq所问,我是否尝试过使用firebug。我刚刚做了,我看到一个错误405-方法不允许。我已将firebug请求中显示的标题添加到问题中。
            <script type="text/javascript">


$(document).ready(function () {
jQuery.support.cors = true;
$.ajax({
        'type': "GET",
        'dataType': 'jsonp',
        'url': 'https://data.unistats.ac.uk/api/KIS/Institutions.JSON?pageIndex=1&pageSize=25',
        'beforeSend': function(xhr) {
            xhr.setRequestHeader("Authorization",
                "Basic " + btoa("AAA"));
                console.error("Basic " + btoa("AAA"));
        },
        success: function(result) {
            alert('done');
        },
        error: function(jqXHR, status, error){ console.log(status, error); }
    });
}
);      </script>