Почему я получаю ошибку 404 при извлечении видеоданных?

#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. Отличное объяснение, спасибо. Могу ли я узнать, почему предоставленный мной код выдает ошибку? Это прекрасно работало с бэкэндом, не требующим отдыха.