1

不太确定如何在 ajax 调用中为 JSON 信息添加身份验证。我正在尝试按照给出的示例http://domainapi.com/documentation/how-to-use-domainapi/servuces-provided/domain-availability-api.html检查域名的可用性,但是它一直在做弹出一个 http 表单,要求输入用户名和密码。

我认为我的代码中的一切都是正确的:

function domainAvailabilityCheck(domain) {
    $.ajax({
        type: 'GET',
        url: 'http://api.domainapi.com/v1/availability/'+domain+'.com',
        beforeSend: setHeader,
        success: function(spitback) {
            console.log(spitback.content.domainList.status);
        },
        dataType:'jsonp'
    });
}

var setHeader = function(xhr) {
    xhr.setRequestHeader('Authorization', 'Basic YWtpcmF0ZXN0OmR0d3N0ZXN0');
}

不知道我做错了什么。

4

2 回答 2

0

您还可以:

var setHeader = function (xhr) {
    xhr.setRequestHeader('Authorization', 'Basic YWtpcmF0ZXN0OmR0d3N0ZXN0');
}

function domainAvailabilityCheck(domain) {
    $.ajax({
        type: 'GET',
        url: 'http://api.domainapi.com/v1/availability/'+domain+'.com',
        beforeSend: setHeader,
        success: function(spitback) {
            console.log(spitback.content.domainList.status);
        },
        dataType:'jsonp'
    });
}

实际上,将保存匿名函数的变量 setHeader 放在哪里并不重要,但是这样它更具可读性(对于我和我的软编译器......;)

于 2013-05-13T21:52:14.020 回答
0

您的 beforeSend 不允许 Jquery 传入 xhr 对象以进行标头修改。该行应该是

beforeSend: function(xhr) { xhr.setRequest(......); } // all-in-one, no extra function needed

或者

beforeSend: function(xhr) { setHeader(xhr); } // call your separate function
于 2013-05-13T21:47:41.660 回答