#javascript #php #json #ajax #restful-url
Вопрос:
Я пытаюсь отобразить видео, которое находится в папке кода в формате mp4. Когда я пытаюсь извлечь видео, нажав на кнопку, оно показывает пустое пространство, но не отображает видео.отображение вывода
Ошибка, которую я получаю с консоли: ПОЛУЧИТЬ http://127.0.0.1:8080/myapi/myapi1/undefined 404 (Не найдено)
Ниже приведен URL-адрес для отображения данных json: http://localhost:8080/myapi/myapi1/user/1
Ссылка выше отображает:
{"videoName":"video.mp4"}
Код для извлечения видео и отображения с помощью ajax:
$('#room1').on('click',function (e){
$.ajax({
method: "GET",
cache: false,
dataType: "json",
url: "http://localhost:8080/myapi/myapi1/user/1",
success: function(data) {
var student = '';
// ITERATING THROUGH OBJECTS
$.each(data, function (key, value) {
// DATA FROM JSON OBJECT
student = '<video height="603"';
student = 'src="'
value.videoName '" autoplay loop muted></video>';
});
$('#video').append(student);
},
error:function(exception){alert('Exeption:' exception);}
})
e.preventDefault();
});
Комментарии:
1. Можете ли вы попробовать сильно обновить страницу, чтобы очистить кэш? Ctrl (или Cmd) R
2. можете ли вы распечатать переменную данных в консоли и добавить ответ?
3. @брайс пытался, но все еще получаю ту же ошибку
4. @AdisonMasih ответ, который я получил: не определен
Ответ №1:
Таким образом, данные, которые вы получаете, ЗАКОДИРОВАНЫ в ФОРМАТЕ JSON. поэтому вам нужно проанализировать его на объект JS. вот так: data = JSON.parse(data)
в вашей success
функции.
Комментарии:
1. я добавил, как предлагалось:
success: function(data = JSON.parse(data))
но я все еще получаю ту же ошибку.2. не так. добавьте
data = JSON.parse(data)
внутри тела функции успеха.
Ответ №2:
(1) Поскольку у вас возвращен только один элемент данных, пожалуйста, измените блок успеха с:
success: function(data) {
var student = '';
// ITERATING THROUGH OBJECTS
$.each(data, function (key, value) {
// DATA FROM JSON OBJECT
student = '<video height="603"';
student = 'src="'
value.videoName '" autoplay loop muted></video>';
});
$('#video').append(student);
},
Для
success: function(data) {
var student = '';
// DATA FROM JSON OBJECT
student = '<video height="603"';
student = 'src="'
data.videoName '" autoplay loop muted></video>';
$('#video').append(student);
},
данные.Имя видео-это уже те данные (имя файла видео), которые вам нужны
(2) Однако, если у вас есть несколько данных, например, следующие:
[{"videoName":"video.mp4"}, {"videoName":"video1.mp4"}]
затем вы можете использовать следующее :
success: function(data) {
var student = '';
for (var x = 0; x < data.length; x ) {
// DATA FROM JSON OBJECT
student = '<video height="603"';
student = 'src="'
data[x].videoName '" autoplay loop muted></video>';
}
$('#video').append(student);
},
данные[индекс].Именем видео будут данные (имя видеофайла) для каждого индекса
(3) Если вы все еще предпочитаете использовать пары ключ / значение, правильный синтаксис будет выглядеть следующим образом:
$.each(data, function (key, value) {
alert(data[key].videoName);
})
Комментарии:
1. Отличное объяснение, спасибо. Могу ли я узнать, почему предоставленный мной код выдает ошибку? Это прекрасно работало с бэкэндом, не требующим отдыха.