Обработка объекта ответа из Django/JQuery в JavaScript Urllib3
Мне нужно скачать заголовки с BBC и использовать Ajax и JQuery в Django. В настоящее время я пытаюсь использовать Urllib3, чтобы создать запрос на получение данных RSS/XML Top News с сайта BBC, который находится по следующему адресу:
' http://feeds.bbci.co.uk/news/rss.xml '
Я создал запрос, в который верю, но когда возвращенный объект передает его обратно в мой HTML/Javascript, он не работает, и я получаю следующую ошибку.
объект, который я передаю через метод window.onload, это: Upon_success({{ AllNews }})
и выдает ошибку "Uncaught SyntaxError: Неожиданный токен &"
Мой HTML и Views.py:
from django.shortcuts import render
import urllib3
import urllib3.request
import json
def index(request):
http = urllib3.PoolManager()
r = http.request('GET', 'http://feeds.bbci.co.uk/news/rss.xml')
xml_news = r.data
context = {'AllNews': xml_news}
return render(request, 'home/NewsHome.html', context)
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script type="application/javascript">
function upon_success (xml) {
alert('ok');
xml.find('item').each(function(){
var title = $(this).find('title').text();
msg =+ "<li> " + title + " </li>"
$("#AllNews ul").append(msg)
}
)};
{% if AllNews %}
window.onload = upon_success({{ AllNews | safe }});
{% endif %}
</script>
</head>
<body>
<h1>Top News: BBC versus CNN</h1>
<ul id="AllNews"></ul>
</body>
</html>
я не понимаю, как передать объект ответа обратно в Javascript, чтобы я мог попытаться извлечь заголовки новостей! любая информация или совет будет высоко ценится!
1 ответ
request
Метод не возвращает простой текстовый ответ, но объект Python, содержащий ответ, код состояния, заголовки и некоторые другие данные. Его нельзя передать напрямую в JavaScript.
Если вы хотите передать просто текстовый ответ, измените:
xml_news = r
чтобы:
xml_news = r.data
Он будет содержать простой XML-ответ от RSS URL. Вы можете анализировать его либо в Python (и передавать в javascript только значащие значения в формате JSON), либо просто передавать его в javascript как есть, обрабатывая его синтаксический анализ на стороне javascript.