Javascript 表单提交两次(ajax和jquery)

Javascript 表单提交两次(ajax和jquery),javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我有一个简单的表单:当我在没有javascript/jquery的情况下提交它时,它工作得很好,我的数据库中只有一个插入,一切都很好 我编写了一些jquery,以便在输入按钮上方的ajax中生成结果,如果出现错误则显示红色消息,如果插入成功则显示绿色消息。我还显示了一个小的gif加载程序 我不明白为什么在使用这个jquery时,两个加载程序同时出现,并且在我的数据库中进行了两次插入 我重申,当我评论javascript时,它工作得很好,我完全相信我的php是可以的 $('#addCtg').su

我有一个简单的表单:当我在没有javascript/jquery的情况下提交它时,它工作得很好,我的数据库中只有一个插入,一切都很好

我编写了一些jquery,以便在输入按钮上方的ajax中生成结果,如果出现错误则显示红色消息,如果插入成功则显示绿色消息。我还显示了一个小的gif加载程序

我不明白为什么在使用这个jquery时,两个加载程序同时出现,并且在我的数据库中进行了两次插入

我重申,当我评论javascript时,它工作得很好,我完全相信我的php是可以的

$('#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;
});