首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >提交表单而不刷新/重定向当前页面(Python (Django) + jQuery + Ajax)

提交表单而不刷新/重定向当前页面(Python (Django) + jQuery + Ajax)
EN

Stack Overflow用户
提问于 2011-10-30 15:32:42
回答 3查看 22.9K关注 0票数 7

是否可以使用Python在不刷新当前页面的情况下提交表单?我希望最终结果类似于Facebook评论的运作方式。

我目前正在使用jQuery表单来执行Ajax。但是,它没有提供我想要的用户体验,因为:

  1. 在使用jQuery表单提交后,地址栏上的URL刷新到我提交的表单。
  2. 它确实刷新了页面。我特别不喜欢它,假设我在页面底部向下滚动到最大。提交表单后,它刷新页面,焦点被重定向到页面顶部。

我希望我已经表明了我想要的。我需要像Facebook这样的评论系统起作用。有人发表了评论,然后提交了注释,而没有刷新页面。

编辑

jQuery代码:

代码语言:javascript
复制
$('#review_submit').submit(function() { 
        var options = {};           
        $(this).ajaxSubmit(options);
        return false; 
});



    $('[name=submit_review_btn]').click(function(){                      
        $('#review_submit').submit();
    });

因此,处理提交的python代码将需要从其服务器端代码重定向页面,因此将页面重定向到这个URL 'main_URL.com‘

在显示了jQuery代码之后,结果如下:

  1. 网址出现在地址栏上: main_URL.com/ form_action_url <--这是我设置为提交表单的表单操作。
  2. 页面重定向到我在服务器端设置的页面。

我对这种Ajax体验感到困惑。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-11-01 11:27:49

您可以通过使用jquery的ajaxPost代替jquery的形式来处理这个问题。这将允许您对表单进行.serialize() (获取参数),并能够返回到JS函数,以便在“表单提交”之后执行您想要的操作。查看jQuery.post()

jsFiddle

这不会刷新页面,因为post是通过AJAX调用发生的。它允许您在文章通过后运行一个函数并执行所需的操作(如果post返回数据,它将在这里可用.如果你想在这次成功之后再发一篇文章,你可以在这里完成.等等)

票数 8
EN

Stack Overflow用户

发布于 2011-10-30 16:10:21

如果您发布了您的JavaScript代码,就会更容易回答这个问题。

您是否使用提交按钮提交表单?如果是这样的话,那么jQuery表单应该处理所有内容,而不是刷新页面。

如果您是在JavaScript中提交表单,那么您的代码在jQuery表单示例中应该类似:

代码语言:javascript
复制
// attach handler to form's submit event 
$('#myFormId').submit(function() { 
    // submit the form 
    $(this).ajaxSubmit(); 
    // return false to prevent normal browser submit and page navigation 
    return false; 
});

return false;在这里是非常重要的。否则,用户将被重定向。

要使您的系统工作,您需要它执行两个阶段:

  1. 提交意见
  2. 将注释追加到其余的注释中(或从服务器获取新的注释,然后追加)

你现在的设置就是这样吗?

票数 3
EN

Stack Overflow用户

发布于 2011-11-04 02:17:39

我有一个非常动态的网站,在各地使用这项技术。我们使用Dojo,但是原则是相同的。正如上面的海报所述,您的表单需要让onsubmit=“返回false;”作为一个属性(或者在它提交的表单对象中),这样页面就不会被重新加载。

在服务器端,我们不使用重定向,而是使用JSON (或XML或其他什么)进行回复,并告诉响应处理程序(jQuery、Dojo等)下一步要做什么。

大多数情况下,这一过程是:

  1. 使用xhrPOST调用发布表单
  2. 在服务器上工作
  3. 返回JSON/xml/text
  4. 处理返回值并让javascript决定要做什么

一个具体的例子如下:

  1. 用户提交病人生命体征
  2. 服务器验证并返回{success:"Vitals接收到“}或{error:”无效数字“}
  3. javascript xhr回调处理程序确定下一步要做什么(关闭对话框、刷新表单以获得新条目或提请注意缺少的字段)

编辑:链接到一些Python框架:链接

链接到关于在Django中返回JSON的基本教程(使用JQuery) 链接

另一个注意事项:当您使用JSON时,它在技术上不再是AJAX,因为X代表XML。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7945848

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档