Uncaught TypeError: Cannot read properties of undefined (чтение 'forEach')

Я хочу использовать Youtube API в своем проекте, где пользователь может искать видео, и он отображает результаты поиска по мере того, как пользователь набирает текст. Я знаком только с python и django. Поэтому я использую учебник, чтобы сделать часть JS для добавления ajax. Все в моем коде точно так, как показано в учебнике, но мой код не работает.

Итак, мой javascript для ajax таков:

<!--        javascript for ajax-->



 <script>
        var delayTimer;
        $("#div_id_search_form").keyup(function() {
            clearTimeout(delayTimer);
            $('#search_results').text('Loading...');
            delayTimer = setTimeout(function() {
              var text = $("#div_id_search_form").val();
              $.ajax({
                url: '/video/search',
                data: {
                  'search_term': text
                },
                dataType: 'json',
                success: function(data) {

                var results = '';
                $('#search_results').text('');
                data['items'].forEach(function(video){results += video['snippet']['title']});


                $('#search_results').append(results);


                }
              });
           }, 1000);
         });
    </script>

а это мой файл views.py, в котором я использую свой API:

def video_search(request):
    search_form = SearchForm(request.GET)
    if search_form.is_valid():
        encoded_search_term = urllib.parse.quote(search_form.cleaned_data['search_term'])
        response = requests.get(f'https://youtube.googleapis.com/youtube/v3/search?part=snippet&maxResults=6&q={ encoded_search_term }&key={ YOUTUBE_API_KEY }')
        return JsonResponse(response.json())
    return JsonResponse({'error': 'Not able to validate form'})

Моя цель здесь не в том, чтобы показывать видео с youtube прямо сейчас. Моя цель - просто отобразить 'Loading...', когда пользователь набирает текст, и если пользователь остановит ввод на одну секунду, он отобразит 6 названий видео, связанных с термином в панели поиска. Так что, я думаю, проблема в Javascript.

Также он работает до части "Loading...", но ничего не показывает, когда пользователь прекращает вводить текст.

А это ошибка, которую он показывает на консоли:

Uncaught TypeError: Cannot read properties of undefined (reading 'forEach')
    at Object.success (addvideo:75)
    at c (jquery.min.js:2)
    at Object.fireWith [as resolveWith] (jquery.min.js:2)
    at l (jquery.min.js:2)
    at XMLHttpRequest.<anonymous> (jquery.min.js:2)

Я ничего не знаю о JS прямо сейчас, поэтому, пожалуйста, будьте как можно более конкретными. Это проект django, просто нужно использовать javascript для этой части.

Дайте мне знать, если вам нужна дополнительная информация.

Заранее спасибо!

Я использовал Crispy Forms на этой странице для своих форм, и он останавливал выполнение кода. Я не знаю почему, но как только я удалил код, он заработал нормально. Вместо crispy forms я теперь использую widget tweaks

Вернуться на верх