AJAX和Django使用教程中的民意调查应用程序:2个问题

时间:2013-12-23 19:42:22

标签: jquery python ajax django

我是这里的新手,我所学到的关于django和python的很多东西来自这个网站。谢谢大家的帮助!这是我的第一个问题。

当我尝试扩展我从Django教程(1.6)中学到的东西并尝试通过AJAX加载Polls应用程序时,我遇到了2个问题。我想使用主要的mysite应用程序作为主页,并使用ajax从mysite项目中的其他应用程序中提取内容。本教程并未真正涵盖在单个页面上集成来自不同应用程序的内容。

我有2个ajax元素已经在主要的mysite页面上工作(一个“技巧或治疗”按钮,它可以检索一些愚蠢的文本,还有一个小的dns查找表单/按钮)但是这些是mysite应用程序的一部分,所以所有的使用mysite app urlconf,views和templates来处理逻辑。

页面上还有另一个div,用于“特色应用”,也可以通过ajax获取。基本上,mysite.views构建了一个具有'ajaxFeaturedAppView'的应用程序列表,然后随机选择一个显示在mysite页面上的“精选应用程序”部分。这是我尝试尽可能地将mysite app与其他应用程序分离的新手。

问题1)初始民意调查问题和选择以及投票按钮都在页面加载时正确显示,但投票按钮只会加载另一个民意调查问题。它应该显示民意调查结果。

问题2)当我点击投票按钮时,页面上的其他ajax元素也会被触发。我认为这是因为Vote按钮操作会触发document ready()事件,该事件初始化ajax元素。但其他ajax元素不这样做;它们不会触发文件ready()事件。

我认为这可能是两个症状的一个问题,实际上。那么,如何让投票按钮不触发文档就绪事件,这样我才能看到投票结果?或者我做错了什么?

编辑: 好的,这些拼凑代码存在一些问题。谢谢你的帮助。

2 个答案:

答案 0 :(得分:1)

编写JavaScript时经常出错。您尚未在单击或提交时禁用默认操作。这意味着JS执行,调用ajax,但随后立即执行正常的浏览器提交,导致刷新。

voteBehavior应接受event参数,您应该在函数开头调用event.preventDefault()

答案 1 :(得分:0)

正如Daniel Roseman所说,问题是你的voteBehavior没有终止并提交表格。您只需将return False;添加到您的函数中即可阻止此操作:

 voteBehavior = function() {
     ...
     return false;
 };

或者丹尼尔罗斯曼在致电event.preventDefault()时说道:

voteBehavior = function(e) {
    ...
    e.preventDefault()
};