#javascript #json #ajax #http #cross-domain
#javascript #json #ajax #http #междоменный
Вопрос:
Я пытаюсь выполнить междоменный ajax-запрос к deezer, API потоковой передачи музыки … и я получаю ошибку «Uncaught SyntaxError: неожиданный токен:». Я знаю, это потому, что данные, которые я получаю обратно, не в правильном формате json, но я попытался изменить тип данных на ‘json’ с ‘jsonp’, и это все еще не работает … вот мой запрос, есть предложения?
$.ajax({
url: "https://api.deezer.com/search?q=" searchString "amp;callback=?",
dataType: 'json',
jsonpCallback: 'callback',
type: 'GET',
success: function (data) {
console.log(data);
}
});
Ответ №1:
Это потому, что вы использовали некодированный второй «?» в вашем URL после первого «?», который используется для отдельной get-строки. Вам нужно удалить эту часть URL "amp;callback=?"
.
Комментарии:
1. если я удалю «amp;callback =?», я получаю следующую ошибку: XMLHttpRequest не удается загрузить api.deezer.com/search ? q=трэвис . В запрошенном ресурсе отсутствует заголовок ‘Access-Control-Allow-Origin’. Следовательно, доступ к источнику ‘ localhost: 3000 ‘ запрещен.
2. … что раздражает, потому что, если я нажму на ссылку выше… это приводит меня прямо к объекту json, который мне нужен
3. Я имею в виду, что вы не можете отправить этот запрос в API таким образом (с помощью XMLHttpRequest), потому что «Заголовок ‘Access-Control-Allow-Origin’ отсутствует в запрошенном ресурсе». Я думаю, вам нужно использовать это руководство . Не забудьте создать приложение здесь .
4. Да, я понял это, в Deezer’s developer API explorer вам не нужно было указывать, в каком формате получать данные, но, по-видимому, мне нужно было указать, что я хочу JSON в запросе к deezer. Это устранило проблему