AJAX和Django使用教程中的polls应用程序:2个问题

2024-05-16 06:15:54 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

我有2个ajax元素已经在mysite页面上运行了(一个“不给糖就捣蛋”按钮,它可以检索一些愚蠢的文本,还有一个小的dns查找表单/按钮),但这些都是mysite应用程序的一部分,所以所有的逻辑都是通过mysite应用程序urlconf、视图和模板来处理的。在

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

问题1)初始投票问题、选项和投票按钮在页面加载时都正确显示,但投票按钮只加载另一个投票问题。它应该显示投票结果。在

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

我认为这可能是一个有两个症状的问题。那么,如何让“投票”按钮不触发“文档就绪”事件,这是否允许我查看投票结果?还是我做错了什么?在

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


Tags: 应用程序元素内容网站事件ajax教程页面
2条回答

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

voteBehavior应该接受一个event参数,并且应该在函数的开头调用event.preventDefault()。在

正如danielroseman所说,问题是您的voteBehavior没有终止并提交表单。只需在函数中添加return False;,就可以防止这种情况:

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

或者正如丹尼尔·罗斯曼打电话给event.preventDefault()所说:

^{pr2}$

相关问题 更多 >