Php 我有一个ajax调用触发了两次(jQuery),并尝试了这里找到的解决方案,但没有任何效果
我的ajax调用将记录输入数据库(它是记录数据的表单的第一部分),因此我需要它从数据库条目返回id 问题是,它触发了两次,所以每次生成2个数据库条目 我试着在php代码中使用Php 我有一个ajax调用触发了两次(jQuery),并尝试了这里找到的解决方案,但没有任何效果,php,jquery,ajax,Php,Jquery,Ajax,我的ajax调用将记录输入数据库(它是记录数据的表单的第一部分),因此我需要它从数据库条目返回id 问题是,它触发了两次,所以每次生成2个数据库条目 我试着在php代码中使用$count和while($count>0),以确保它不会循环——我认为不会循环,所以问题在于我的jQuery 我尝试将preventDefault放在我的提交按钮单击功能上,但也没有成功 这是我的密码: $(document).ready(function(){ $('#wpgstep1').one('click
$count
和while($count>0)
,以确保它不会循环——我认为不会循环,所以问题在于我的jQuery
我尝试将preventDefault
放在我的提交按钮单击功能上,但也没有成功
这是我的密码:
$(document).ready(function(){
$('#wpgstep1').one('click',function(){
// validate form fields are all filled in
var budget=$('#budget').val();
if(budget=='')
{
$('#budgeterror').show();
}
var yellowpages=$('#ads-yellowpages').val();
var flyers=$('#ads-flyers').val();
var brochures=$('#ads-brochures').val();
var radiotv=$('#ads-radiotv').val();
var none=$('#ads-none').val();
var other=$('ads-other').val();
var otherstatement=$('ads-other-statement').val();
var cust_id=$('#cust_id').val();
if(other !='')
{
if(otherstatement==='')
{
$('#adsothererror').show();
}
}
else
{
otherin='0';
}
if(yellowpages==="on")
{
yellowpagesin='1';
}
else{
yellowpagesin='0';
}
if(flyers==="on")
{
flyersin='1';
}
else
{
flyersin='0';
}
if(brochures==="on")
{
brochuresin='1'
}
else
{
brochuresin='0';
}
if(radiotv==="on")
{
radiotvin='1';
}
else
{
radiotvin='0';
}
if(none==="on")
{
nonein='1'
}
else
{
nonein='0';
}
var dataString='cust_id=' + cust_id + '&step=1&budget=' + budget + '&yellowpages='+yellowpagesin + '&flyers=' + flyersin + '&brochures=' + brochuresin + '&radiotv='+ radiotvin + '&none='+ nonein + '&other=' + otherstatement;
$.ajax({
type: "POST",
url: "submitwpg.php",
data: dataString,
dataType:'json',
success: function(data)
{
alert(data);
var i="";
var p=eval (data);
for (i in p)
{
$('#wpgpart2').append('<input type=hidden name=wpgid value=' + p[i] + '>');
}
$('#wpgform1').hide();
$('#wpgform2').show();
}
});
return false;
});
});
$(文档).ready(函数(){
$('wpgstep1').one('click',function(){
//验证表单字段已全部填写
var预算=$(“#预算”).val();
如果(预算=“”)
{
$(“#预算恐怖”).show();
}
var yellowpages=$('#ads yellowpages').val();
var flyers=$(“#广告传单”).val();
var手册=$(“#广告手册”).val();
var radiotv=$('#ads radiotv').val();
var none=$('#ads none').val();
var other=$('ads-other').val();
var otherstatement=$('ads-other-statement').val();
var cust_id=$('#cust_id').val();
如果(其他!='')
{
if(otherstatement=='')
{
$('#adsothererror').show();
}
}
其他的
{
otherin='0';
}
如果(黄页==“打开”)
{
黄页=1';
}
否则{
黄页=0';
}
如果(传单==“打开”)
{
flyersin='1';
}
其他的
{
flyersin='0';
}
如果(手册==“打开”)
{
小册子in='1'
}
其他的
{
小册子in='0';
}
如果(无线电视==“打开”)
{
radiotvin='1';
}
其他的
{
radiotvin='0';
}
如果(无==“打开”)
{
不在class='1'
}
其他的
{
nonein='0';
}
var dataString='cust_id='+cust_id+'&step=1&budget='+budget+'&yellowpagesin='+yellowpagesin+'&flyers='+flyersin+'&brochures='+brochuresin+'&radiotv='+radiotvin+'&none='+nonein+'&other='+otherstatement;
$.ajax({
类型:“POST”,
url:“submitwpg.php”,
数据:dataString,
数据类型:'json',
成功:功能(数据)
{
警报(数据);
var i=“”;
var p=评估(数据);
对于(p中的i)
{
$('wpgpart2')。附加('');
}
$('#wpgform1').hide();
$('wpgform2').show();
}
});
返回false;
});
});
生成一个全局变量
var form_submitting = false;
在ajax调用之上
if(form_submitting == false){
form_submitting = true;
//your ajax call
}
form_submitting = false;
在ajax调用的成功函数中
if(form_submitting == false){
form_submitting = true;
//your ajax call
}
form_submitting = false;
生成一个全局变量
var form_submitting = false;
在ajax调用之上
if(form_submitting == false){
form_submitting = true;
//your ajax call
}
form_submitting = false;
在ajax调用的成功函数中
if(form_submitting == false){
form_submitting = true;
//your ajax call
}
form_submitting = false;
如果提交按钮位于表单内部,则可能是ajax功能正在执行,然后表单定期发布。你可以试着转动你的手
<input type='submit' />
进入
如果提交按钮位于表单内部,则可能是ajax功能正在执行,然后表单会定期发布。你可以试着转动你的手
<input type='submit' />
进入
我在下面发布了一个答案,但问题是。。。你是在双击链接/按钮吗?我会先注释掉ajax调用,然后想一想它会触发两次吗?通过alert()
或console.log()
提问。然后,当你知道它发射一次时,问题可能就消失了。我在下面贴了一个答案,但问题是。。。你是在双击链接/按钮吗?我会先注释掉ajax调用,然后想一想它会触发两次吗?通过alert()
或console.log()
提问。然后,当你知道它发射一次时,问题可能就消失了。我试过了,但它仍然发射了两次。我可以在Firebug控制台中看到它,然后它会在数据库中进行双重输入。这是非常令人困惑的…和令人沮丧的。这就像两个事件被触发一样,一个接着一个。@user2272153如果您正确地实现了上面的代码,那么无法进行两次提交,我唯一的建议是删除form_submitting=false代码>来自您的成功代码,因此ajax只能启动一次,然后再启动。即使我将submit按钮设置为submit按钮(我只是创建了一个div,并将其样式设置为带有ID的按钮,以分配给单击事件),它仍然会启动两次。我想知道如果我完全删除标签会发生什么,但我也不认为这是答案。好吧,我忽略了使其成为全局变量…当我这么做时,瞧。只提交一次!谢谢我试过了,但它仍然发射了两次。我可以在Firebug控制台中看到它,然后它会在数据库中进行双重输入。这是非常令人困惑的…和令人沮丧的。这就像两个事件被触发一样,一个接着一个。@user2272153如果您正确地实现了上面的代码,那么无法进行两次提交,我唯一的建议是删除form_submitting=false代码>来自您的成功代码,因此ajax只能启动一次,然后再启动。即使我将submit按钮设置为submit按钮(我只是创建了一个div,并将其样式设置为带有ID的按钮,以分配给单击事件),它仍然会启动两次。我想知道如果我完全删除标签会发生什么,但我也不认为这是答案。好吧,我忽略了使其成为全局变量…当我这么做时,瞧。只提交一次!