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