首页 文章

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

提问于
浏览
0

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

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

我有2个ajax元素已经在主要的mysite页面上工作(一个“技巧或处理”按钮,检索一些愚蠢的文本,和一个小的DNS查找表单/按钮)但这些是mysite应用程序的一部分,所以所有的逻辑是使用mysite app urlconf,视图和模板处理 .

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

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

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

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

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

2 回答

  • 1

    正如Daniel Roseman所说,问题是你的 voteBehavior 没有终止并提交表格 . 您可以通过简单地将 return False; 添加到您的函数来防止这种情况:

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

    或者丹尼尔罗斯曼在致电_1023437时说道:

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

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

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

相关问题