【问题标题】:Form gets submitted twice with written ajax function使用书面 ajax 函数提交表单两次
【发布时间】:2012-10-18 09:28:10
【问题描述】:

我写了一个 JQuery AJAX 提交脚本,它会通过 AJAX 提交一个带有类 ajax 的表单并序列化它等等 继承人的脚本:

$("form.ajax").submit(function(){
   alert('a');
    var url = $(this).attr('action');
    if($(this).attr("element") != null)
    {
        var element = $(this).attr("element");
    }
    else if($(this).attr("element") == 'undefined')
    {
        var element = "render";
    }
    $("#"+element).html("<div id='loader'>Laden...<br /><img src=\"/site/templates/img/ajax-loader.gif\"/></div>");
    $.post(url, $(this).serialize(), function(data){

        $("#"+element).html(data);
    });
    return false;
}); 

好吧,当我提交表单时,任何带有 ajax 类的表单都会被提交两次,我可以在 Chrome 控制台的网络选项卡中看到这一点。

出了什么问题,我不明白(我把 alert ('a') 放在那里检查它是否会弹出两次,但它没有)。

请帮帮我?

编辑: HTML,我之前发布过几次,但我们开始吧:

<form  class='ajax' element='make-payment' action='/statistieken/maak-betaling'  method='post'>
<input type='hidden' name='charity_id' value='1749'>
<li class='form-item'><label for='amount'>Bedrag:</label></li>
<li class='form-item'><input type='text' id='amount' name='amount' /></li>
<li class='form-item'><input type='submit' value='Betalen' /></li>
</form>

您好, 哈维亚克

【问题讨论】:

  • 这一行 $("#"+element).html(data); 它不知道 element 来自哪里,因为您在 if else 语句中将其声明为 var。尝试在你的 $.post 中做一个console.log(element) 很可能console.log() 的输出是undefined
  • 您能否将您的表单完整源代码包含在内,以便非常清楚
  • 如果我提醒元素,它确实会提醒正确的元素
  • 那是因为您在 if else 语句中声明了您的 var element,而 var element 仅位于该范围内
  • @ianace 元素的值“make-payment”从表单 class='ajax' element='make-payment' action='/statistieken/maak-betaling' method='post '>,对不起,我不清楚。它确实有效。

标签: php jquery ajax


【解决方案1】:

试试这样的

$("form.ajax").submit(function(){
   alert('a');
    var element;
    var url = $(this).attr('action');
    if($(this).attr("element") != null)
    {
        element = $(this).attr("element");
    }
    else if($(this).attr("element") == 'undefined')
    {
        element = "render";
    }
    $("#"+element).html("<div id='loader'>Laden...<br /><img     src=\"/site/templates/img/ajax-loader.gif\"/></div>");
    $.post(url, $(this).serialize(), function(data){

        $("#"+element).html(data);
    });
    return false;
}); 

【讨论】:

  • 请提供html &lt;form&gt;,不要让我们猜测
  • $("form.ajax") 这应该选择一个带有 class="ajax" 的表单,这在给定的&lt;form&gt; 中是没有的,所以它会忽略你的 onSubmit 事件处理程序
  • 检查一下http://jsfiddle.net/RQ3Qj/,如果 url 被提醒,这意味着你的选择器是正确的,如果你的 $("form.ajax") 不是错误的,或者在你的表单中添加 class="ajax"
  • 对不起,我贴错了,我确实有 ajax 类...让我编辑它
猜你喜欢
  • 1970-01-01
  • 2011-06-17
  • 2015-04-04
  • 1970-01-01
  • 2015-01-26
  • 2013-12-10
  • 2013-05-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多