Почему ajax возвращает «undefined»?

Здравствуйте! Никак не могу решить проблему с ajax - постоянно возвращает "undefined". Хочу сразу отметить, что даже если пробовать вывести json через console.log - получается тоже самое.

Код:
$.ajax({
        type: 'GET',
        url: '../Data/Scripts/GetTrackInfo.php',
        async: true,
        data:'track_hash=760e07bb98d02f0887f20f7ba75e7581',
        contentType: "application/json",
        dataType: 'json',
 success: function(json) {
         var track_name = json['track_name'];
         var track_author = json['track_author'];
         $('#latest-tracks').html('<div class="list-group"><a class="list-group-item"><strong>Название:</strong>'+track_author+' - '+track_name+'</a></div>');
  },
  error: function(e) {
         console.log(e.message)
   }
})

Json на сервере формирую при помощи json_encode. Если обратиться к php скрипту напрямую, через адресную строку, json успешно выводится:
{
	"track_name": "Smoke Gang Costra Nostra [Feat El Pablo]",
	"track_hash": "760e07bb98d02f0887f20f7ba75e7581",
	"track_url": "DJ Smokey - Smoke Gang Costra Nostra [Feat El Pablo]",
	"track_bitrate": "245",
	"track_author": "DJ Smokey",
	"cover": "..\/Data\/Covers\/Template\/none.jpg",
	"track_url2": "DJ+Smokey+-+Smoke+Gang+Costra+Nostra",
	"track_album": "Single",
	"album_hash": "",
	"track_downloads": "0",
	"track_playtime": "04:52",
	"track_genre": "Relax"
}
  • Вопрос задан
  • 1724 просмотра
Решения вопроса 1
@Undebraif Автор вопроса
Проблема решена. Я по глупости и невнимательности в Sublime Text сохранил php-файл, который генерировал json, в UTF-8 WITH BOM. Очень глупая ошибка, а стоила столько времени. Всем большое спасибо за помощь!
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
kirill_782
@kirill_782
Днем я Маринетт
Вы обращайтесь как к массиву, а надо как к объекту.
$.ajax({
        type: 'GET',
        url: '../Data/Scripts/GetTrackInfo.php',
        async: true,
        data:'track_hash=760e07bb98d02f0887f20f7ba75e7581',
        contentType: "application/json",
        dataType: 'json',
 success: function(json) {
         var track_name = json.track_name;
         var track_author = json.track_author;
         $('#latest-tracks').html('<div class="list-group"><a class="list-group-item"><strong>Название:</strong>'+track_author+' - '+track_name+'</a></div>');
  },
  error: function(e) {
         console.log(e.message)
   }
})

Попробуйте это. Js код.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы