将侦听器附加到按钮以使用 AJAX 发送表单数据与使用标准 HTML 表单有什么区别
What is the difference between attaching a listener to a button to send form data with AJAX and using a standard HTML form?
也就是说,这两种方法有什么区别:
- 阿贾克斯
我有一些随机输入字段不一定在表单容器 (HTML) 中。在我的JS文件中,我有一个按钮的侦听器(不一定以任何方式附加到或与输入字段相关),该按钮使用jquery提取值并使用$.post(url,postParams,callback(...){...});以发布数据。
- .HTML
我将所有输入字段放在表单标记的上下文中,并添加一个提交输入,其操作指向相应的路由(这对应于上面 AJAX/jquery 方法中的 url)。
有什么收获?是否只是选项 1 将提交表单而无需刷新页面,而选项 2 将
是的,方法 nr 1 基本上允许您在不刷新整个页面的情况下提交表单。
最好使用"渐进式增强"将两者结合起来。 这基本上意味着你从最基本的方法开始,以确保它全面工作,然后你给事情增添趣味——那些有能力的人将获得更好的用户体验。
举个例子:
<form action="somescript.aspx" method="post" class="ajax">
<label for="something">Something</label>
<input type="text" name="something" id="something" />
<input type="submit" value="Submit form" />
</form>
这是一个非常基本的标准HTML表单,适用于所有设备,每个人都应该能够成功使用它,使用辅助技术等等。
然后添加这个简单的JS脚本,它"劫持"了表单的默认功能,并为那些拥有JS的人添加了AJAX:
<script>
$('form.ajax').submit(function() {
var form = $(this);
$.post(form.attr('action'), form.serialize(), function(result) {
// Do something with the response
});
return false;
});
</script>
实际上没有问题。当然,对于 AJAX 请求,您可以发送额外的标头(以便服务器可以识别它是 AJAX 请求)。许多JavaScript框架,如jQuery,总是为此目的添加X-Requested-With: XMLHttpRequest
。此外,由于同源政策,您不能只发布到另一个域。除此之外,它基本上是一样的。
一个小问题:如果 JavaScript 被禁用,或者出现错误(可能是因为您使用了特定浏览器不支持的功能),处理程序将不起作用。
表单的一个陷阱,它将始终加载一个全新的页面,而使用 AJAX,您只需发布表单并显示一个小响应而无需重新加载页面。
我认为最好的方法是将它们结合起来。让你的表单像普通的HTML表单一样工作,并添加一层JavaScript/AJAX,这不是使其工作所必需的,但增加了更好的用户体验。
- 如何从pdftron webviewer获取表单数据
- JS验证ajax返回的html中的表单数据
- 在不同的文件中使用Javascript获取表单数据
- 使用Javascript读取Webstorage表单数据
- Uploadify-随机表单数据's已返回上载表单
- 如何在使用ajax提交的codeigniter中使用form_validation验证表单数据
- 在post-expressjs之后持久化表单数据
- 需要一个用于AJAX的Javascript库,其中包含多部分/表单数据
- jQuery发布并获取表单数据
- Ajax表单数据phpPOST不工作
- 如何将整个模型集附加到表单数据中,并在MVC中获得它
- 如何从javascript访问表单数据
- 如何从Angular Payments获取表单数据
- 通过javascript获取pdf文件的表单数据
- 有没有一种方法可以在jQuery.serialize()之前获取表单数据,或者与jQuery.sserialize(()
- 在 Angular2 中构建多部分/表单数据 POST 请求并验证输入类型文件
- 无法读取未定义的属性“用户名” - 通过电子邮件在 Node.js 中发送表单数据
- 使用 Ajax 获取表单数据
- 我无法从引导模式中清除表单数据
- 如何从 django 模板语言获取表单数据