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

The*_*son 2 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': function(xhr) {
            xhr.setRequestHeader("Authorization",
                "Basic " + encodeBase64("ABCDEF" + ":" + password));
        },
        success: function(result) {
            alert('done');
        },
        error: function(result) {
            alert('no');
        }
    });
    </script>
Run Code Online (Sandbox Code Playgroud)

我希望这可以称之为成功或错误之一.因此输出应该是警告说"完成"或警告说"不".甚至是开发人员控制台中的错误告诉我出了什么问题.

我没有得到任何东西,也没有警报显示,我在控制台中没有错误.有什么想法在这里发生了什么?

谢谢,

编辑:使用firebug我看到请求标题是:请求标题显示为:

OPTIONS /api/KIS/Institutions.JSON?pageIndex=1&pageSize=25 HTTP/1.1
Host: data.unistats.ac.uk
User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64; rv:22.0) Gecko/20100101 Firefox/22.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Origin: null
Access-Control-Request-Method: GET
Access-Control-Request-Headers: authorization
Connection: keep-alive
Run Code Online (Sandbox Code Playgroud)

这似乎不正确,因为它应该是:授权:基本TheSecurityKey

响应是405,方法不允许重新加载页面以获取源代码:http://data.unistats.ac.uk/api/KIS/Institutions.JSON?pageIndex = 1&pageSize = 25

响应标头:

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
Run Code Online (Sandbox Code Playgroud)

当我从我设置的服务器尝试时

可以在这里看到:http: //spindroid.co.uk/tt/byUniversity.html

部分解决方案

使用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>   
Run Code Online (Sandbox Code Playgroud)

Guf*_*ffa 7

该getJSON方法不会使用设置对象.请改用该ajax方法,并指定dataType: 'json'其中一个设置.