Сервер выдает ошибку 403 браузеру , поскольку у вас нет разрешения на доступ к ресурсу из-за сообщения об ошибке («Избранное запрошенного пользователя не является общедоступным»).
Однако сервер даже не получает запрос в примере jsFiddle.
Вам не разрешено делать кросс-браузерные запросы AJAX.Это называется политика того же происхождения .Это делается из соображений безопасности, чтобы злоумышленники не могли делать неприятные вещи без вашего ведома.Это тупой инструмент, но эффективный.
Когда вы даже не отправляете запрос на сервер, код состояния отсутствует.Об этом сообщает объект XMLHTTPRequest (и его оболочка jqXHR) как 0
.
По сути, вы не можете делать то, что пытаетесь сделать в браузере.
Если вывам нужен браузер для асинхронного доступа к таким данным, вам нужно написать оболочку на вашем сервере, чтобы получать информацию с удаленного сервера и передавать ее в браузер.Существует обходной путь (он называется JSONP - JSON with Padding) , но я не верю, что YouTube его поддерживает.
Редактировать: Per ответ gradbot ,можно выполнить запрос JSONP, изменив свой код на dataType
на jsonp
.
Однако теперь вы не сможете использовать xhr.status
.Это связано с тем, что JSONP не использует объект XHR, поэтому нет статуса, доступного для проверки.
Вот рабочий пример с использованием предложенного gradbot фида .Обратите внимание, что объект результата передается обработчику, а не объекту jqXHR.