Javascript 表单提交两次(ajax和jquery)
我有一个简单的表单:当我在没有javascript/jquery的情况下提交它时,它工作得很好,我的数据库中只有一个插入,一切都很好 我编写了一些jquery,以便在输入按钮上方的ajax中生成结果,如果出现错误则显示红色消息,如果插入成功则显示绿色消息。我还显示了一个小的gif加载程序 我不明白为什么在使用这个jquery时,两个加载程序同时出现,并且在我的数据库中进行了两次插入 我重申,当我评论javascript时,它工作得很好,我完全相信我的php是可以的Javascript 表单提交两次(ajax和jquery),javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我有一个简单的表单:当我在没有javascript/jquery的情况下提交它时,它工作得很好,我的数据库中只有一个插入,一切都很好 我编写了一些jquery,以便在输入按钮上方的ajax中生成结果,如果出现错误则显示红色消息,如果插入成功则显示绿色消息。我还显示了一个小的gif加载程序 我不明白为什么在使用这个jquery时,两个加载程序同时出现,并且在我的数据库中进行了两次插入 我重申,当我评论javascript时,它工作得很好,我完全相信我的php是可以的 $('#addCtg').su
$('#addCtg').submit(function () {
var action = $(this).attr('action');
var name = $('#name').val() ;
$('.messages').slideUp('800', function() {
$('#addCtg input[type="submit"]').hide().after('<img src="spin.gif" class="loader">');
$.post(action, {
name: name
}, function (data) {
$('.messages').html(data);
$('.messages').slideDown('slow');
$('.loader').fadeOut();
$('#addCtg input[type="submit"]').fadeIn();
});
});
return false;
});
$('#addCtg')。提交(函数(){
var action=$(this.attr('action');
var name=$('#name').val();
$('.messages').slideUp('800',function(){
$('#addCtg input[type=“submit”]')。在('')之后隐藏();
$员额(行动{
姓名:姓名
},函数(数据){
$('.messages').html(数据);
$('.messages').slideDown('slow');
$('.loader').fadeOut();
$('#addCtg input[type=“submit”]')。fadeIn();
});
});
返回false;
});
我真的不明白为什么它不起作用,因为我使用“return false”来更改submit按钮的基本行为
基本php以防万一:
<?php
require_once('Category.class.php');
if (isset($_POST['name'])) {
$name = $_POST['name'] ;
if ($name == "") {
echo '<div class="error">You have to find a name for your category !</div>' ;
exit();
} else {
Category::addCategory($name) ;
echo '<div class="succes">Succes :) !</div>' ;
exit();
}
} else {
echo '<div class="error">An error has occur: name not set !</div>';
exit();
}
您正在调用:$('.messages')
-我打赌类messages
中有2个元素。然后它们都将发布到您的服务器。一个可能的原因可能是您正在使用按钮或提交发布ajax请求。
试试这个
$('#addCtg').submit(function (e) {
e.preventDefault();
var action = $(this).attr('action');
var name = $('#name').val() ;
$('.messages').slideUp('800', function() {
$('#addCtg input[type="submit"]').hide().after('<img src="spin.gif" class="loader">');
$.post(action, {
name: name
}, function (data) {
$('.messages').html(data);
$('.messages').slideDown('slow');
$('.loader').fadeOut();
$('#addCtg input[type="submit"]').fadeIn();
});
});
return false;
});
$('#addCtg')。提交(函数(e){
e、 预防默认值();
var action=$(this.attr('action');
var name=$('#name').val();
$('.messages').slideUp('800',function(){
$('#addCtg input[type=“submit”]')。在('')之后隐藏();
$员额(行动{
姓名:姓名
},函数(数据){
$('.messages').html(数据);
$('.messages').slideDown('slow');
$('.loader').fadeOut();
$('#addCtg input[type=“submit”]')。fadeIn();
});
});
返回false;
});
当然,伙计,谢谢你的眼睛,那是我的错!我确实有和第二个表单来添加文章,我使用的是完全相同的类。。。。谢谢你的外景!我也考虑过这一点,但作为Poul Bak的赌注,我犯了一个很大的错误,在两个没有链接的不同div中使用相同的类名(.messages)。无论如何,谢谢你:)
$('#addCtg').submit(function (e) {
e.preventDefault();
var action = $(this).attr('action');
var name = $('#name').val() ;
$('.messages').slideUp('800', function() {
$('#addCtg input[type="submit"]').hide().after('<img src="spin.gif" class="loader">');
$.post(action, {
name: name
}, function (data) {
$('.messages').html(data);
$('.messages').slideDown('slow');
$('.loader').fadeOut();
$('#addCtg input[type="submit"]').fadeIn();
});
});
return false;
});