2016-04-18 4 views
-1

Мы пытаемся вызвать API с помощью JavaScript. Существует пример JavaScript на сайте API, как показано ниже:Нужна помощь Вызов API

<!DOCTYPE html> 
 
<html> 
 
<head> 
 
    <title>JSSample</title> 
 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script> 
 
</head> 
 
<body> 
 

 
<script type="text/javascript"> 
 
    $(function() { 
 
     var params = { 
 
      // Request parameters 
 
     }; 
 
     
 
     $.ajax({ 
 
      url: "https://emi.azure-api.net/ICPConnectionData/single/?id={ICP}&" + $.param(params), 
 
      beforeSend: function(xhrObj){ 
 
       // Request headers 
 
       xhrObj.setRequestHeader("Ocp-Apim-Subscription-Key","{subscription key}"); 
 
      }, 
 
      type: "GET", 
 
      // Request body 
 
      data: "{body}", 
 
     }) 
 
     .done(function(data) { 
 
      alert("success"); 
 
     }) 
 
     .fail(function() { 
 
      alert("error"); 
 
     }); 
 
    }); 
 
</script> 
 
</body> 
 
</html>

Мы вошли в {ICP} и {подписки ключ}, но когда мы запускаем его, мы получаем ошибку каждый раз.

Ошибка, которую мы получаем, является только тем, что она не работает и показывает предупреждение («ошибка»). Мы попытались использовать data.status и получили ошибку 0 "error".

Here's a screenshot of the console and the error in it.

Новое на использование API, как это и так предполагая, что мы просто не хватает что-то очевидное?

Заранее за вашу помощь.

The website with the API info is here

И вот код, который я до сих пор, так что вы можете попробовать это сами:

<!DOCTYPE html> 
 
<html> 
 
<head> 
 
    <title>JSSample</title> 
 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script> 
 
</head> 
 
<body> 
 

 
<script type="text/javascript"> 
 
    $(function() { 
 
     var params = { 
 
      // Request parameters 
 
     }; 
 
     
 
     $.ajax({ 
 
      url: "https://emi.azure-api.net/ICPConnectionData/single/?id=0000212621UNA89&" + $.param(params), 
 
      beforeSend: function(xhrObj){ 
 
       // Request headers 
 
       xhrObj.setRequestHeader("Ocp-Apim-Subscription-Key","f9d45d33880f4e0dac46255d9bc90fce"); 
 
      }, 
 
      type: "GET", 
 
dataType: 'jsonp', 
 

 
      // Request body 
 
      data: "{body}", 
 
success:function(data){alert(data)} 
 
     }) 
 
     .done(function(data) { 
 
      alert("success"); 
 
     }) 
 
     .fail(function() { 
 
      alert("error"); 
 
     }); 
 
    }); 
 
</script> 
 
</body> 
 
</html>

+0

В Chrome разработчик инструменты, перейдите на вкладку «Сеть», прежде чем вызовет вызов API, вы можете увидеть какую-то полезную информацию, если найдете ее в списке на этой вкладке. –

+1

Вы прочитали сообщение об ошибке? – SLaks

+1

какая ошибка вы получаете, вставьте ее в свой вопрос подробно – Robus

ответ

2

Я думаю, что это кросс вопрос домен CORS

обновление:

попробовать добавить DATATYPE и успеха варианты:

$ajax({ 
    url:'http://yoururl.com', 
    method:'GET', 
    dataType: 'jsonp', 
    success:function(data){alert(data)} 
}) 

update: Я тестирую URL-адрес api через postman, api подходит для использования no Allow-Control-Allow-Origin:* Заголовок в ответе. которые вызывают проблему CORS.

Когда я отправляю запрос в jquery ajax, он возвращает ошибку доступа 401, что означает, что заголовок аутентификации не может быть отправлен при вызове jsonp ajax. один способ sovle этой проблемы:

  • перейти к серверу API, задать заголовок ответа Allow-Control-Allow-Origin:*

вы можете обратиться к этому вопросу:

How do you send a custom header in a cross-domain (CORS) XMLHttpRequest?

+0

Включил его и все еще не работал. – Chase

+0

Я все еще думаю, что это проблема CORS. можете ли вы попробовать поставить обратный вызов в успех: точно так же, как я упомянул в ответе. – Sabrina

+0

Добавление dataType: 'jsonp', Остановил ошибку. Но все еще не удачный звонок. – Chase

Смежные вопросы