【发布时间】: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 -
您能否将您的表单完整源代码包含在内,以便非常清楚
-
如果我提醒元素,它确实会提醒正确的元素
-
那是因为您在
ifelse语句中声明了您的var element,而var element仅位于该范围内 -
@ianace 元素的值“make-payment”从表单 class='ajax' element='make-payment' action='/statistieken/maak-betaling' method='post '>,对不起,我不清楚。它确实有效。