首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Jquery表单提交不支持AJAX和Rails莫名其妙地重新呈现index.html.erb

JQuery是一个流行的JavaScript库,用于简化HTML文档遍历、事件处理、动画效果等操作。在表单提交方面,JQuery提供了方便的方法来处理表单数据的提交和响应。

然而,JQuery的表单提交默认是通过传统的同步方式进行的,而不支持AJAX(Asynchronous JavaScript and XML)方式。AJAX允许在不刷新整个页面的情况下,通过异步方式与服务器进行数据交互,从而提升用户体验和页面性能。

如果需要在JQuery中实现表单的AJAX提交,可以使用JQuery的AJAX方法来发送异步请求。以下是一个示例代码:

代码语言:txt
复制
$(document).ready(function(){
  $('form').submit(function(event){
    event.preventDefault(); // 阻止表单的默认提交行为

    // 获取表单数据
    var formData = $(this).serialize();

    // 发送AJAX请求
    $.ajax({
      url: 'submit.php', // 提交表单的URL
      type: 'POST', // 请求类型
      data: formData, // 表单数据
      success: function(response){
        // 处理服务器响应
        console.log(response);
      },
      error: function(xhr, status, error){
        // 处理错误
        console.log(error);
      }
    });
  });
});

在上述代码中,我们通过$('form').submit()方法来监听表单的提交事件。然后,使用event.preventDefault()方法阻止表单的默认提交行为。接着,使用$(this).serialize()方法获取表单数据,并通过$.ajax()方法发送异步请求。在success回调函数中,可以处理服务器的响应数据。

关于Rails莫名其妙地重新呈现index.html.erb的问题,可能是由于Rails的默认行为或配置问题导致的。Rails框架通常会根据请求的类型和路由规则,自动选择对应的视图模板进行渲染。如果在表单提交后出现了重新呈现index.html.erb的情况,可能是由于路由配置或控制器中的逻辑问题。

为了解决这个问题,可以检查以下几个方面:

  1. 路由配置:确保表单提交的路由配置正确,并且指向了正确的控制器和动作。
  2. 控制器逻辑:在控制器中,确保表单提交后的逻辑正确,不会重新呈现index.html.erb。可以使用render方法指定渲染其他视图模板,或者使用redirect_to方法进行重定向。
  3. 表单提交方式:确保表单的提交方式是POST,并且没有其他的逻辑或中间件干扰。

如果以上检查都没有解决问题,可以进一步检查Rails的配置文件和相关日志,以确定是否有其他配置或插件引起了这个问题。

总结起来,JQuery表单提交不支持AJAX,但可以通过使用JQuery的AJAX方法来实现表单的异步提交。至于Rails莫名其妙地重新呈现index.html.erb的问题,可能是由于路由配置或控制器逻辑的问题,需要仔细检查和排查。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

富Web应用的架构与转化方法:Web应用系列第二篇

丰富的应用程序的标志之一是缺少页面重新加载和减少页面导航。例如,您在表单上输入数据,然后单击“提交”按钮。没有明显的等待响应。这是因为是使用了Ajax技术将数据传输到服务器并在后台接收响应。...JSF2生命周期本机处理Ajax处理。可以在执行和呈现阶段部分更新组件树。使用facelets标记在页面上对组件进行分组,以指示要处理和呈现的组件。...三、Ajax表单提交 我们将看到的第一个特性,是能够提交表单数据并仅在页面的该部分调用JSF生命周期而无需重新加载页面。 以下是声明注册表单的页面部分(简化以供讨论): ?...如果字段参与Ajax表单提交,则也会进行验证。 快速入门使用客户端验证,使用JSF页面中的标记和相应成员实体bean属性上的JSR-303 bean验证注释。...探索Ajax表单提交 已替换为其Ajax等效项。

3.6K20

Github 移除 JQuery 的过程

jQuery使操作DOM、定义动画和发出“AJAX”请求变得简单——基本上,它使web开发人员能够创建更现代、更动态的体验,而这些都是其他人无法比拟的。...总之,与jQuery分离意味着我们可以更多地依赖web标准,让mdnweb文档成为我们的前端开发人员事实上的默认文档,在未来维护更具弹性的代码,并最终从打包的包中删除30kb的依赖项,从而加快页面加载时间和...大量与rails行为接口的旧代码,我们的Ruby on rails适配器采用“不引人注目”的JS方式,将AJAX生命周期处理程序附加到某些表单: 我们不必一次将所有这些调用站点重写为新方法,而是选择触发假...ajax*生命周期事件,并让这些表单像以前一样异步提交其内容;只有这次fetch()在内部使用。...直到2017年Chrome和Safari都发布并实现了Web组件v1规范,我们才开始更广泛地采用定制元素。 在jQuery迁移期间,我们寻找适合作为自定义元素提取的模式。

2.1K10
  • 如何解决jQuery Validation针对动态添加的表单无法工作的问题?

    为了充分利用ASP.NET MVC在服务端呈现HTML的能力,在《利用动态注入HTML的方式来设计复杂页面》一文中介绍了,通过Ajax调用获取HTML来呈现复杂页面中某一部分界面的解决方案。...我们知道ASP.NET MVC默认集成了jQuery Validation,但是对于通过JavaScript动态添加的表单,客户端验证默认情况下是失效的。...} 41: } 如下所示的是Action方法Update对应的View(Update.cshtml)的定义,这是一个Model类型为Contact的强类型View,指定的联系人信息以编辑状态呈现在一个表单中...14: }) 15: 16: 17: 遗憾的是,运行程序后点击Save按钮提交表单后...为了解决这个问题,可以在动态注入表单之后按照如下的方式调用$.validator.unobtrusive.parse()对表单元素进行重新解析。

    2K90

    利用动态注入HTML的方式来设计复杂页面

    该页面初始状态如左图所示,它仅仅具有一个用于输入查询条件(First Name和Last Name)进行联系人查询的表单。...方式提交的表单,目标Action为具有如下定义的Find,它根据指定的First Name和Last Name筛选匹配的联系人列表,并将其呈现在一个名为ContactListPartial的View中。...tr> 25: } 26: 27: 从QueryFormPartial.cshtml的定义可以看到,表单成功提交之后会调用一个名为...POST的方式提交到HomeController的Action方法Update(@using(Ajax.BeginForm("Update", null, new AjaxOptions { HttpMethod...: contacts.Add(contact); 9: return "OK"; 10: } 11: } 联系人修改表单提交后关闭当前窗口并加载新的数据通过具有如下定义

    3.6K20

    三分钟让你了解什么是Web开发?

    简单地说,这就是数据如何被推送到服务器,然后最终存储在一个文件或数据库中。 注意:假设我们想在提交之前添加验证——例如,产品应该包含至少5个字符,或者SKU字段不应该是空的。...服务器脚本(PHP、Ruby on Rails、Python等)从表单读取值并将其推送到数据库。...这个对象被传递给“视图”来呈现它。 Ajax & Single Page Applications (SPA) 如果你出生在上个世纪,你可能会记得在90年代和00年代,Hotmail和Yahoo!...在非ajax网站中,每个用户操作都需要从服务器加载完整的完整页面。这个过程是低效的,并且创建了一个糟糕的用户体验。所有的页面内容都消失了,然后重新出现。...POST:向服务器提交表单数据,或者通过Ajax提交任何数据。 例如,当你在浏览器中输入google.com时,浏览器会将这个命令发送到google.com服务器。

    5.8K30

    Python爬虫(十九)_动态HTML介绍

    它可以收集用户的跟踪数据,不需要重载页面直接提交表单,在页面嵌入多媒体文件,甚至运行网页游戏。...jQuery可以动态地创建HTML内容,只有在JavaScript代码执行后才会显示。如果你使用传统的方法采集页面内容,就只能获得JavaScript代码执行之前页面的内容。...Ajax 我们与网站服务器通信的唯一方式,就是发出HTTP请求获取新页面。如果提交表单之后,或从服务器获取信息之后,网站的页面不需要重新刷新,那么你访问的网站就在用Ajax技术。...Ajax全称是Asynchronous JavaScript and XML(异步JavaScript和XML),网站不需要使用单独的页面请求就可以和网络服务器进行交互(收发信息) DHTML Ajax...比如页面上的按钮只有当用户移动鼠标之后才出现,背景色可能每次点击都会改变,或者用一个Ajax请求触发页面加载一段内容,网页是否属于DHTML,关键要看有没有用JavaScript控制HTML和CSS元素

    1.6K50

    JavaScript学习笔记(五)——Ajax

    jQuery与Ajax的综合应用 Ajax是 Asynchronous JavaScript And XML 的缩写,意思是异步的JavaScript和xml,他是基于JavaScript和HTTP请求的一种网页编程模式...]); 参数同get serialize()序列化表单 在jQuery中,可以使用serialize函数将表单数据序列化为键值对,创建url编码文本字符串进行提交。...好用的jQuery插件: 1. jQuery Form插件 jQuery Form是一个优秀的表单插件,它可以非常容易地使HTML表单支持Ajax。...jQuery Form插件有两个核心方法: ajaxForm() 适用于以提交表单的方式处理数据,需要在表单中标明表单的action、id、method属性,最好在表单中提供submit按钮。...此方法大大简化了使用ajax提交表单时的数据传递问题,不需要逐个地以JavaScript的方式获取每个表单属性的值。

    1.9K10

    30分钟全面解析-图解AJAX原理

    背景: 1.传统的Web网站,提交表单,需要重新加载整个页面。 2.如果服务器长时间未能返回Response,则客户端将会无响应,用户体验很差。...4.浏览器提交表单后,发送的数据量大,造成网络的性能问题。 问题: 1.如何改进? 2.AJAX是什么? 3.有什么优势? 4.有什么缺点?...一、什么是 AJAX  1.为什么需要AJAX 当需要从服务器获取数据,并刷新页面的操作,如果不采用AJAX,则需要用提交整个表单的方式,当提交表单时,发送请求给服务器,页面需要等待服务器发送完response...实现AJAX 下面的代码实现了当切换DropDownList的item时,触发getWeeklyCalendar方法,用JQuery的类库方法$.ajax来发送AJAX请求。...> 六、优势 1.使用异步方式与服务器通信,页面不需要重新加载,页面无刷新 2.按需取数据,减少服务器的负担 3.使得Web应用程序更为迅捷地响应用户交互 4.AJAX基于标准化的并被广泛支持的技术,不需要下载浏览器插件或者小程序

    3.3K121

    jQuery插件 -- Form表单插件jquery.form.js

    jQuery Form插件是一个优秀的Ajax表单插件,可以非常容易地、无侵入地升级HTML表单以支持Ajax。...jQuery Form有两个核心方法 -- ajaxForm() 和 ajaxSubmit(), 它们集合了从控制表单元素到决定如何管理提交进程的功能。...,轻易地将表单的提交方式升级为Ajax提交方式 ajaxForm() 和 ajaxSubmit() 都能接受0个或1个参数,当为单个参数时,该参数既可以是一个回调函数,也可以是一个options对象,上面的例子就是回调函数...,Form插件会以Ajax方式自动提交这些数据,格式如:[{name:user,value:val },{name:pwd,value:pwd}] 15 //jqForm: jQuery对象...37 }); 表单提交之前进行验证:  beforeSubmit会在表单提交前被调用,如果beforeSubmit返回false,则会阻止表单提交 1 beforeSubmit: validate

    13.5K50

    jQuery笔试题汇总整理--2018

    1、因为jQuery是轻量级的框架,大小不到30kb 2、它有强大的选择器,出色的DOM操作的封装 3、有可靠的事件处理机制(jQuery在处理事件绑定的时候相当的可靠) 4、完善的ajax(它的ajax...:$(":input")选择所有的表单输入元素 $(":text")选择所有的text的input元素 4、jQuery的美元符号$有什么作用?...对象[下标]获取dom对象 将dom对象放入$("")中转为jQuery对象 6、jQuery中$.get()提交和$.post()提交的区别 1、$.get()使用GET方法来进行异步提交 $.post...ajax的缺点 1、ajax不支持浏览器back按钮。 2、安全问题 AJAX暴露了与服务器交互的细节。 3、对搜索引擎的支持比较弱。 4、破坏了程序的异常机制。 5、不容易调试。...这使得Web应用程序更为迅捷地回应用户动作,并避免了在网络上发送那些没有改变过的信息。 17、请介绍一下XMLhttprequest对象。

    2.5K21

    php + jquery 利用 smtp 实现发送邮件功能

    php + jquery 利用 smtp 实现发送邮件功能 在做一个企业站的小项目,用户不希望登录到后台查看留言,而是希望留言能直接发送到自己的邮箱里,然后这样他就可以在手机上快速的处理这些用户的留言了...不过这个功能我自己开发的 fengcms 并不支持,而且目前没有了解php的朋友在身边。本着自己动手丰衣足食的精神,自己解决这个问题吧。 实现设想 我希望通过ajax来实现这个功能。...我的设想规划如下 文件说明msn.html提交留言表单html文件mail.phpphp邮件处理核心文件send_mail.phphtml和mail.php的沟通文件 通过msn.html构造表单,并利用...jquery的ajax功能,将信息构造成json信息,post 到 send_mail.php 文件。...} }, error: function (data) { alert("服务器不支持发送邮件") } }); } </script

    1.3K10

    ASP.NET MVC的客户端验证:jQuery的验证

    ASP.MVC 2.0及其之前的版本采用ASP.NET Ajax进行客户端验证,在ASP.NET MVC 3.0中,jQuery验证框架被引入是我们可以采用Unobtrusive JavaScript的方式进行客户端验证...我们就以验证为例,一个Web页面中具有一个表单,我们需要 对针对表单中三个文本框(foo、bar和baz)的输入进行验证。...Unobtrusive JavaScript在jQuery的验证中得到了很好的体现,接下来我们就简单地介绍一下使用jQuery进行验证的编程方式。...整个HTML文件的主体部分是一个表单,我们可以通过其中的文本框输入一些个人信息(姓名、出生日期、Blog地址和Email地址),最后点击“保存”按钮对输入数据进行提交。...document).ready(function () { 3: $("form").validate(); 4: }); 现在运行我们的程序,一个用于提交个人信息的页面会被呈现出来

    8.2K90

    ajax异步提交数据到数据库

    很多时候我们提交数据到服务器端数据库都是用form表单,这样子是最普通最简单提交数据的方法,你填写完表单后,post提交到后台文件.php,处理完后返回到指定页面,最后,页面就重新刷新了一遍,显示预想的页面...当然,这个逻辑操作没一点毛病,但有一点,那就是给用户不好的体验:重新刷新了页面。假如,用户没按要求输错了某个值,然后弹出一个框框告诉你“亲爱的,你刚刚花了半个小时注册的内容得重新输入了!!”...,这时候,你肯定的mmp的,所以,咱们今天要推举的ajax异步post提交数据到数据库来解决这个问题。 先理解个概念吧:同步与异步。...举个简单的例子:你用form表单,直接post提交数据到数据库,那是同步;你用ajax异步提交post,那是异步操作;就相当于,你有一样东西要给A,你直接放给他,然后他用完直接还给你,这就叫同步,而,你可以通过快递...好,说了这么多啦,咱们来看看具体的代码:登录界面(form表单提交的很简单,我就不举对比例子了,不懂的可以百度或者自己操作下) 先引入必要的文件:jquery.js,【layer.js弹出框框架可选用

    4.6K40

    javascript跨域

    所谓Javascript跨域问题,是指在一个域下的页面中通过js访问另一个不同域下的数据对象,出于安全性考虑,几乎所有浏览器都不允许这种跨域访问,这就导致在一些ajax和iframe应用中,使用跨域的web...使用Jquery中getScript和getJson方法实现跨域 Jquery 的getScript 和 getJson方法都可以调用跨域的js或服务端脚本,但是它们的实现原理不一样。...其实原生态From 表单 POST 到一个后台处理脚本是不存在跨域问题,因为提交过程不牵涉到JS操作其它域名的对象,可是POST表单后,页面会刷新,给用户带来的体验不佳,这时我们经常会想到用jquery...ajax post 方法来提交表单, 虽然这种方式不会刷新页面,但是会存在跨域问题。...,用jsonp数据类型啊,但是jsonp目前只支持get请求方式,对post请求不支持。

    1.5K40
    领券