使用AJAX请求的API没有响应

时间:2017-11-21 11:16:51

标签: javascript ajax api

我正在尝试使用AJAX请求连接到API,但是我没有得到任何响应。无论是我的标题还是其他问题 - 当我在控制台中看不到任何错误时,很难调试它。

这是我的AJAX请求:

$.ajax({
        url: 'https://api.partners.bazoeka.com/latest/api/postcodecheck?&format=json',
        method: 'GET',
        crossDomain: true,
        beforeSend: function (xhr) {
        xhr.setRequestHeader('username:myUsername', 'password:myPassword','apikey:apiKey');                  
    }

   }).done(function () {
         console.log("connected!");
         //do stuff
        });

此API提供的文档提供的信息很少:

  

通过在标头中传递用户名,密码和API密钥来完成身份验证   HTTP(S)请求。对于所有功能,需要授权。所以能够做到   成功通话您必须传递用户名,密码和API密钥

我知道我的凭据是正确的,请求可以正常使用cURL:

 curl  -H"username:myUsername" -H"password:myPassword" -H "apikey:apiKey" "https://api.partners.bazoeka.com/latest/api/postcodecheck?&format=json&postcode=1010AA&housenr=1"

问题可能是我的AJAX请求中的标题吗?

2 个答案:

答案 0 :(得分:2)

xhr.setRequestHeader()应接受密钥和值,如果您要添加多个标头,请尝试为每个标头添加xhr.setRequestHeader()

beforeSend: function (xhr) {
    xhr.setRequestHeader('username', 'MyUsername');
    xhr.setRequestHeader('password', 'MyPassword');
    xhr.setRequestHeader('apikey', 'apikey');  
}

见doc: https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/setRequestHeader

答案 1 :(得分:0)

根据jQuery文档,如果beforeSend中的回调函数将返回false,则不会执行ajax请求。 我认为,setRequestHeader将需要2个参数,标题名称和标题值。 你能为每个标题尝试调用setRequestHeader,如:

xhr.setRequestHeader('username', 'myUsername');
xhr.setRequestHeader('password','myPassword');
xhr.setRequestHeader('apikey' , 'apiKey');

更好的是,将附加标题作为对象传递给ajax配置:

...
headers: {
username: 'myUsername',
password: 'myPassword',
apikey: 'apikey
},
...