AJAX jQuery无法识别我的表单

时间:2016-05-22 03:04:00

标签: javascript jquery ajax

我有几种形式。我尝试用AJAX jQuery来管理它们。我想最小化我使用的代码,所以我尝试对所有表单使用相同的AJAX函数。我的代码不起作用。这就是我所拥有的:

HTML

<form id="mi_forma_1">
    <input type="hidden" name="forma" value="mi_forma_1" />
    <input type="submit" value="Enviar" id="1" />
</form>
<form id="mi_forma_2">
    <input type="hidden" name="forma" value="mi_forma_2" />
    <input type="submit" value="Enviar" id="2" />
</form>

的jQuery

id_formulario = null;

  $("input:submit").click(function(e){
    e.preventDefault();
    id_del_submit     = $(this).attr('id');  // This having 1 or 2
    id_formulario = '"#mi_forma_'+id_del_submit+'"';
});
   $(id_formulario).on("submit", function(e) {
    e.preventDefault();
    var datos = $(id_formulario).serializeArray();
    $.ajax({
       //...
    });
  });

结果:没什么!当我单击提交时,AJAX不会被执行。我做了几次测试,发现 id_formulario 变量包含字符串“mi_forma_1”“#mi_forma_2”

为什么AJAX从未执行过?

似乎行 $(id_formulario).on(“提交”... 无法识别 id_formulario 的值。 怎么解决这个问题?

2 个答案:

答案 0 :(得分:2)

id_formulario中有一个转义字符串。使用单引号或双引号,但不要同时使用它们,除非您希望它们成为字符串的一部分(您不需要)。

更改

'"#mi_forma_'+id_del_submit+'"'

"#mi_forma_" + id_del_submit

此外,由于您阻止了提交按钮的默认行为,因此可能永远不会执行提交操作。删除该行或添加类似

的内容
$(id_formulario).trigger("submit")

提交点击事件监听器。

最后一点:您正在使用null作为选择器注册提交事件侦听器,而不是您认为的值。首先,您将两个函数注册为事件侦听器。但是,您希望在第二个侦听器注册之前执行第一个侦听器的回调 - 这不会发生。变量id_formulario仅在按下提交按钮时更改。但是,之后您不会致电$(id_formulario).on("submit", ...

我将如何写它:

$("#mi_forma_1, #mi_forma_2").on("submit", function(e) {
    e.preventDefault();
    var datos = $(this).serializeArray();
    $.ajax({
       //...
    });
});

通过“this”引用可确保您使用正确的表单。无需构建任何ID。

答案 1 :(得分:-1)

您的代码错误,变量“id_formulario”以“null”启动,您的分配仅在按钮点击时发生。请记住,“。click”是一个事件,只有在用户操作发生时才会执行事件。

var id_formulario = null;

  $("input:submit").click(function(e){
    e.preventDefault();
    id_del_submit     = $(this).attr('id');  // This having 1 or 2
    id_formulario = '"#mi_forma_'+id_del_submit+'"';
    
    // editing
    var datos = $(id_formulario).serializeArray();
    $.ajax({
       //...
    });
});