Php Ajax表单提交两次
Html代码:Php Ajax表单提交两次,php,jquery,ajax,Php,Jquery,Ajax,Html代码: <div class="col-lg-12" style="position:relative"> <div class="panel panel-default"> <div class="panel-heading"> <i class="fa fa-files-o fa-fw"></i> Add New Video </div>
<div class="col-lg-12" style="position:relative">
<div class="panel panel-default">
<div class="panel-heading">
<i class="fa fa-files-o fa-fw"></i> Add New Video
</div>
<!-- /.panel-heading -->
<div class="panel-body">
<form role="form" id="VideoAdd" action="process_VideoAdd.php" method="POST">
<div class="form-group">
<div class="alert" style="display:none;" id="videoError">
</div>
</div>
<div class="form-group">
<div class="input-group">
<span class="input-group-addon">
<i class="glyphicon glyphicon-star"></i>
</span>
<input class="form-control" placeholder="Video Url" name="vurl" id="vurl" type="text" required>
</div>
</div>
<div class="form-group">
<div class="form-group">
<input type="submit" class="btn btn-md btn-info btn-block" value="Update">
</div>
</div>
</form>
</div>
<!-- /.panel-body -->
</div>
<!-- /.panel -->
</div>
<div class="col-lg-12" style="position:relative">
<div class="panel panel-default">
<div class="panel-heading">
<i class="fa fa-files-o fa-fw"></i> Add New Video
</div>
<!-- /.panel-heading -->
<div class="panel-body">
<form role="form" id="VideoAdd">
<div class="form-group">
<div class="alert" style="display:none;" id="videoError">
</div>
</div>
<div class="form-group">
<div class="input-group">
<span class="input-group-addon">
<i class="glyphicon glyphicon-star"></i>
</span>
<input class="form-control" placeholder="Video Url" name="vurl" id="vurl" type="text" required>
</div>
</div>
<div class="form-group">
<div class="form-group">
<input type="submit" id="videoSbmt" class="btn btn-md btn-info btn-block" value="Update">
</div>
</div>
</form>
</div>
<!-- /.panel-body -->
</div>
<!-- /.panel -->
</div>
这是我通过ajax提交url值的代码。它在本地主机(wamp服务器)中使用时工作良好。但是,当我将此代码上传到Web服务器并运行它时,当单击submit按钮时,它总是两次提交到数据库中 将js用作:-
//禁用此按钮
//将按钮id作为
//禁用添加按钮
var is_request_sent = false; // declare global var for request
$("#VideoAdd").submit(function(e)
{
if(is_request_sent == false)
{
var postData = $(this).serializeArray();
var formURL = $(this).attr("action");
$("#videoError").hide();
$.ajax(
{
url : formURL,
type: "POST",
cache: false,
data : postData,
success:function(data, textStatus, jqXHR)
{
if(data=="error_redirect")
{
window.location="login.php";
}else if(data=="success"){
$("#videoError").removeClass("alert-danger");
$("#videoError").show();
$("#videoError").addClass("alert-success");
$("#videoError").html("Successfully Updated");
} else {
alert(data);
$("#videoError").show();
$("#videoError").addClass("alert-danger");
$("#videoError").html("Error in updating");
}
},
error: function(jqXHR, textStatus, errorThrown)
{
is_request_sent = false;
$('#submit_form').removeAtrr('disabled');
},
beforeSend: function(){
// Handle the beforeSend event
is_request_sent = true;
$('#submit_form').atrr('disabled','disabled');
},
complete: function(){
// Handle the complete event
is_request_sent = false;
}
});
e.preventDefault(); //STOP default action
}
});
我已经改变了你的HTML代码,还有一些js的改变。e、 预防默认值();由于提交是一个函数而不是事件,因此无法使用您的代码 Html代码:
<div class="col-lg-12" style="position:relative">
<div class="panel panel-default">
<div class="panel-heading">
<i class="fa fa-files-o fa-fw"></i> Add New Video
</div>
<!-- /.panel-heading -->
<div class="panel-body">
<form role="form" id="VideoAdd" action="process_VideoAdd.php" method="POST">
<div class="form-group">
<div class="alert" style="display:none;" id="videoError">
</div>
</div>
<div class="form-group">
<div class="input-group">
<span class="input-group-addon">
<i class="glyphicon glyphicon-star"></i>
</span>
<input class="form-control" placeholder="Video Url" name="vurl" id="vurl" type="text" required>
</div>
</div>
<div class="form-group">
<div class="form-group">
<input type="submit" class="btn btn-md btn-info btn-block" value="Update">
</div>
</div>
</form>
</div>
<!-- /.panel-body -->
</div>
<!-- /.panel -->
</div>
<div class="col-lg-12" style="position:relative">
<div class="panel panel-default">
<div class="panel-heading">
<i class="fa fa-files-o fa-fw"></i> Add New Video
</div>
<!-- /.panel-heading -->
<div class="panel-body">
<form role="form" id="VideoAdd">
<div class="form-group">
<div class="alert" style="display:none;" id="videoError">
</div>
</div>
<div class="form-group">
<div class="input-group">
<span class="input-group-addon">
<i class="glyphicon glyphicon-star"></i>
</span>
<input class="form-control" placeholder="Video Url" name="vurl" id="vurl" type="text" required>
</div>
</div>
<div class="form-group">
<div class="form-group">
<input type="submit" id="videoSbmt" class="btn btn-md btn-info btn-block" value="Update">
</div>
</div>
</form>
</div>
<!-- /.panel-body -->
</div>
<!-- /.panel -->
</div>
你的
e.preventDefault()//停止默认操作
应该是您要做的第一件事,而不是最后一件事。请记住,$.ajax()
调用是异步的,因此在运行时,可能正在运行默认操作
$("#VideoAdd").submit(function(e)
{
e.preventDefault(); //STOP default action
var postData = $(this).serializeArray();
var formURL = $(this).attr("action");
$("#videoError").hide();
$.ajax({
url : formURL,
type: "POST",
cache: false,
data : postData,
success:function(data, textStatus, jqXHR) {
if(data=="error_redirect") {
window.location="login.php";
}else if(data=="success"){
$("#videoError").removeClass("alert-danger");
$("#videoError").show();
$("#videoError").addClass("alert-success");
$("#videoError").html("Successfully Updated");
} else {
alert(data);
$("#videoError").show();
$("#videoError").addClass("alert-danger");
$("#videoError").html("Error in updating");
}
},
error: function(jqXHR, textStatus, errorThrown) {
}
});
});
使用.one()尝试此操作
你能检查一下控制台有多少post呼叫。如果你将
e.preventDefault()
移到顶部会怎么样?与论坛网站不同,我们不使用“谢谢”或“感谢任何帮助”或签名。请看“.顺便说一句,这是“提前感谢”,不是“提前感谢”。谢谢你的评论,但同样的问题。
$("#VideoAdd").submit(function(e)
{
e.preventDefault(); //STOP default action
var postData = $(this).serializeArray();
var formURL = $(this).attr("action");
$("#videoError").hide();
$.ajax({
url : formURL,
type: "POST",
cache: false,
data : postData,
success:function(data, textStatus, jqXHR) {
if(data=="error_redirect") {
window.location="login.php";
}else if(data=="success"){
$("#videoError").removeClass("alert-danger");
$("#videoError").show();
$("#videoError").addClass("alert-success");
$("#videoError").html("Successfully Updated");
} else {
alert(data);
$("#videoError").show();
$("#videoError").addClass("alert-danger");
$("#videoError").html("Error in updating");
}
},
error: function(jqXHR, textStatus, errorThrown) {
}
});
});
$("#VideoAdd").one('submit'. function(e){
...
});