Как работать, если данные, возвращаемые из $http.get() не в формате JSON, это обычный текст?

Я использую API для запроса данных от указанного ресурса.

$http.get('http:...').success(function() {

});

Но я получаю ошибку

"SyntaxError: неожиданный токен r в JSON в позиции 1",

Как мы можем справиться с этой проблемой?

3 ответа

.success а также .error методы были удалены из AngularJS 1.6.

Вместо

$http.get(...)
  .success(function(data, ...) {
    ...
  })
  .error(function(data, ...) {
    ...
  });

использование

$http.get(...).then(
  function success(response) {
    var data = response.data;
    ...   
},function error(response) {
    var data = response.data;
});

Переопределить преобразование ответа по умолчанию JSON.parse

Если тип контента application/json или ответ выглядит как JSON. Служба $http десериализует его с помощью анализатора JSON.

Чтобы избежать этого, настройте transformResponse Свойство передать ответ без какого-либо преобразования:

var config = { transformResponse: angular.identity };

$http.get(url, config).then(function(response) {
    console.log(response.data);
});

Для получения дополнительной информации см. Служба AngularJS $http - Переопределение преобразований по умолчанию на запрос

Json используется по умолчанию, вы можете установить ожидаемый тип ответа на text:

$http.get('http:...', {responseType: "text"}).success(function(reponse) {
    console.log(reponse);
});

Более подробную информацию можно найти в AngularJS документах

Другие вопросы по тегам