在JQuery中提交表单 - 为什么在使用事件处理程序时提供动作参数

时间:2017-03-04 07:44:59

标签: jquery forms

我编写了以下代码来处理JQuery中的表单提交

$('#registration-form').on('submit',function(e){
    e.preventDefault();
    var details = $('#registration-form').serialise();
    $.post('/newreg',details,function(data){});
});

我注意到上面的代码如果我声明HTML表单如下:

<form id="registration-form" action="/newreg" method="post">

但如果我不在表格标签

中提供动作和方法,那么它是行不通的
<form id="registration-form">

Haven我在JQuery中已经提到了表单的事件处理程序,操作和方法?在HTML表单标签中再次提及相同的内容是不是多余的?

2 个答案:

答案 0 :(得分:0)

  

我还没有在JQuery中提到过表单的事件处理程序,操作和方法吗?

你有,但你可以用JavaScript阅读它们并具有更通用的功能。

$.ajax({
    url: this.action,
    method: this.method,
    data: $(this).serialize()
}).done(function (data, textStatus, jqXHR) { });
  

在HTML表单标记中再次提及相同的内容不是多余的吗?

是的,但这不一定是坏事。

请参阅the dictionary

  

工程(组件)不是运行所必需的,但在另一组件发生故障时包括在内。

如果您正在编写高质量,强大的代码,则需要在系统中具有冗余。 Javascript does fail所以以unobtrusive的方式编写它是最佳做法。

(这里的重点是正确连接的表单,而不是JS中重复的值。请参阅答案的顶部以了解如何避免重复。)

答案 1 :(得分:-1)

您可以尝试使用out动作或方法声明的这个ajax请求代码

    $('#registration-form').on('submit',function(e){
     e.preventDefault();
     var details = $('#registration-form').serialise();
     $.ajax({
     url : '/newreg',
     data : details,
     type : 'post',
     function : success(data){
      console.log(data); 
     },
     function : error(data){
      console.log(data); 
     }
    });

    });