【发布时间】:2015-04-23 15:06:20
【问题描述】:
我对 ajax 很陌生。以下是我的用例: 我正在开发一个附带项目,将显示不同运动的新闻和分数。为了执行相同的操作,我使用来自不同来源的 RSS 提要。我能够使用“feedparser”插件在 django 视图中获取和解析 rss 提要,并将与上下文相同的内容传递给相应的模板。以下是我的视图函数和模板(用于板球)。
def cricket(request):
feeds_cric = feedparser.parse('http://www.espncricinfo.com/rss/content/story/feeds/0.xml') #espncricinfo feed.
feeds_cric_scores = feedparser.parse('http://static.cricinfo.com/rss/livescores.xml') #espncricinfo feed.
context = {'feeds_cric': feeds_cric,'feeds_cric_scores' : feeds_cric_scores}
return render(request,'scorecenter/cricket.html', context)
下面是对应的模板。
{% extends "scorecenter/index.html" %}
{% block content %}
<ul>
{% for entry in feeds_cric.entries %}
<li><a href="{{ entry.link }}">{{ entry.title }}</a></li>
<p>{{ entry.description }}</p>
{% endfor %}
</ul>
{% endblock content %}
{% block score %}
<ul>
{% for entry in feeds_cric_scores.entries %}
<li><a href="{{ entry.link }}">{{ entry.title }}</a></li>
<!-- <p>{{ entry.description }}</p> -->
{% endfor %}
</ul>
{% endblock score %}
下面是 index.html 文件。
现在,我想使用 AJAX 仅重新加载页面的某些块,而不是重新加载和重定向整个页面。我写了一个脚本来检查
<body>
<nav class="navbar navbar-inverse navbar-fixed-top">
<div class="container-fluid">
<div class="navbar-header">
<a class="navbar-brand" href="#">Allscores</a>
</div>
<div>
<ul class="nav navbar-nav navbar-right">
<li><a href="#" onclick="urlChecker('cricket')">Cricket</a></li>
<li><a href="#" onclick="urlChecker('football')">Football</a></li>
<li><a href="#" onclick="urlChecker('basketball')">Basketball</a></li>
<li><a href="#" onclick="urlChecker('tennis')">Tennis</a></li>
</ul>
</div>
</div>
</nav>
<div class="navbar navbar-default" id="empty_nav"></div>
<div class="testingData">This should be updated</div>
<div class="row">
<div class="col-sm-8" id="news">
<h3>Latest News</h3>
{% block content %}
{% endblock content %}
</div>
<div class="col-sm-4" id="scores">
<h3>Latest scores</h3>
{% block score %}
{% endblock score %}
</div>
</div>
<div id="footer">
Copyright © acllscores.com
</div>
</body>
在我的 urlChecker() 脚本中,我检查单击了哪个锚标记并分配相应的 url。以下是脚本:
function urlChecker (route) {
switch(route) {
case 'cricket':
$.post( "/scorecenter/cricket/", function( data ) {
$( ".result" ).html( data );
});
break;
case 'football':
$.post( "/scorecenter/football/", function( data ) {
$( ".testingData" ).html( data );
});
break;
case 'tennis':
$.post( "/scorecenter/tennis/", function( data ) {
$( ".testingData" ).html( data );
});
break;
case 'basketball':
$.post( "/scorecenter/basketball/", function( data ) {
$( ".testingData" ).html( data );
});
break;
}
}
更新: 添加 urls 文件:
urlpatterns = patterns('',
url(r'^$', views.index,name='index'),
url(r'^test/$', views.test,name='test'),
url(r'^cricket/$', views.cricket,name='cricket'),
url(r'^basketball/$', views.basketball,name='basketball'),
url(r'^football/$', views.football,name='football'),
url(r'^tennis/$', views.tennis,name='tennis'),
)
我不明白如何使用 ajax 将提要数据发布到我的模板。 请帮忙
【问题讨论】:
-
您在发布到的 URL 上是否有实际的端点(例如
/scorecenter/basketball/)?如果有,它们长什么样?此外,index.html示例上方的文本似乎在“...检查...”。您目前遇到什么错误? -
嗨,是的,我有指向 URL 的端点。使用 urls.py 文件的内容更新问题。目前我通过调试能够理解的是,我的视图函数没有向 ajax 调用返回任何数据,对 url '127.0.0.1:8000/scorecenter/cricket' 的请求处于挂起状态。
-
刚刚看到您更新的评论。如果您的端点视图通过直接通过其 url 打开它们来工作,那么接下来检查浏览器的开发工具,ajax 请求返回的状态代码。我在下面的答案中写了一些可能与问题相关的点。
标签: javascript ajax django rss