#javascript #json #coderunner
Вопрос:
Итак, я внес обновления в этот код, чтобы исправить некоторые проблемы, на которые указывалось в другом вопросе. Функция выполняется, но возвращает {«Состояние готовности»:0,»статус»:0,»statusText»:»ошибка»}. Я переключился с $.getJSON на $.ajax, чтобы я мог отправлять заголовки, чтобы, надеюсь, исправить ошибку, но она по-прежнему выдает мне ту же ошибку без особых подробностей.
<HTML>
<head>
<title>Ecobee API PIN TEST</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
</head>
<body>
<script type="text/javascript">
$(document).ready(function PINCode() {
apiKey = 'kmkbJCrEUbMBpO2I6E90QeYcueAz1p00'
// set all apiKey inputs to have apiKey value entered
$(".apiKey").each(function() {
$(this).val(apiKey);
});
var url = 'https://api.ecobee.com/authorize?response_type=ecobeePinamp;client_id=' apiKey 'amp;scope=smartWrite';
$.ajax({
dataType: "json",
url: url,
headers: { 'Access-Control-Allow-Origin': '*' },
success: function(data) {
$("#authCode").val(data.code);
alert("JSON Ran");
var response = JSON.stringify(data, null, 4);
$('#response1').html(response);
}
})
// $.getJSON(url,function(data) {
// // set authCode to be code attribute of response
// $("#authCode").val(data.code);
// alert("JSON Ran")
// var response = JSON.stringify(data, null, 4);
// $('#response1').html(response);
// })
.fail(function(jqXHR, textStatus) {
$('#response1').html("The following error was returned: <br><br>" JSON.stringify(jqXHR) "<p>Please Contact <b>M2 AV Consulting</b> at <a href=mailto:support@m2avc.com?subject='EcobeePINSupport'>support@m2avc.com</a>")
console.log(textStatus);
});
})
</script>
<pre id="response1" class="code-json">(Response JSON will appear here...I hope.)</pre>
</body>
</HTML>
Комментарии:
1. Загляните в консоль инструментов разработки браузера и посмотрите, не является ли это ошибкой CORS. Если это так, вам нужно будет использовать прокси-сервер для выполнения запроса и не раскрывать свои учетные данные на стороне клиента
2. Похоже на то. Вот что я получаю: [Ошибка] Происхождение m2avconsulting.com не допускается с помощью Access-Control-Allow-Origin. [Ошибка] Не удается загрузить XMLHttpRequest api.ecobee.com/… из-за проверок контроля доступа. [Журнал] ошибка (api, строка 333) [Ошибка] Не удалось загрузить ресурс: Источник m2avconsulting.com не допускается с помощью Access-Control-Allow-Origin. (авторизация, строка 0)
3. Установка заголовков управления доступом в запросе бесполезна. Они должны быть установлены в ответ на удаленном сервере. Вам нужно будет использовать прокси-сервер либо на сервере, которым вы управляете, либо на стороннем сервисе