Неожиданный токен: ошибка при выполнении запроса Ajax json get

#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. Это устранило проблему