2010-04-27 7 views
1

Я пытаюсь отправить форму через AJAX вместо обычной подачи POST. HTML это просто стандартная форма с method="post" и мой JQuery код выглядит следующим образом:jQuery Форма представления AJAX не работает

jQuery.noConflict(); 
jQuery(document).ready(function($) { 
    var $form = $('#default_contact'); 

    $form.submit(function() { 
     $.ajax({ 
      type: 'POST', 
      url: $form.attr('action'), 
      data: $form.serialize(), 
      success: function(response) { 
       console.log(response); 
      } 
     }); 

     return false; 
    }); 
}); 

(на основе this answer)

Я возвращаюсь фальшь функции представить, но форма по-прежнему получать представляется и я не могу понять, почему. Не получить ошибок Firebug.

ответ

4

ваш код работает нормально, если html настроен правильно. вот мой тестовый html (с php), поэтому вы можете сравнить его.

<?php 
if (!empty($_POST)) { 
    die("<pre>" . print_r($_POST, true) . "</pre>"); 
} 
?> 
<html> 
<head> 
    <title>ajax submit test</title> 
<script type="text/javascript" src="jquery-1.3.2.min.js"></script> 
<script type="text/javascript"> 
    jQuery.noConflict(); 
    jQuery(document).ready(function ($) { 
     var $form = $('#default_contact'); 

     $form.submit(function() { 
      $.ajax({ 
       type: 'POST', 
       url: $form.attr('action'), 
       data: $form.serialize(), 
       success: function (response) { 
        alert(response); 
       } 
      }); 

      return false; 
     }); 
    }); 
</script>  
</head> 
<body> 
    <form id="default_contact" action="formsubmit.php" method="post"> 
    <input type="hidden" value="123" name="in1" /> 
    <input type="hidden" value="456" name="in2" /> 
    <input type="submit" value="send" /> 
    </form> 
</body> 
</html> 
+0

Оказалось, что это действительно глупо - код библиотеки jQuery не был включен. Это было в условном выражении PHP, которое было ложным на странице, которую я тестировал ... D'oh! – DisgruntledGoat

2

Если у вас установлен html, чтобы форма работала сама по себе, тогда она будет действовать как обычная форма без jquery. Так достаньте атрибут действия с HTML и изменить JQuery на:

url: your-submit-file.php, 

Если это не сработает, попробуйте:

jQuery(document).ready(function($) { 
    var $form = $('#default_contact'); 

    $form.submit(function(event) { 
     $.ajax({ 
      type: 'POST', 
      url: your-submit-file.php, 
      data: $form.serialize(), 
      success: function(response) { 
       console.log(response); 
      } 
    }); 
    event.preventDefault; 
    return false; 
}); 

Кроме того, вы пробовали JQuery в $ .post() ? Это намного проще в использовании ...

0

я была аналогичная проблемно моя проблема была, что во время поста формы, я использую $ («форма»). Представить, чтобы сделать что-то перед странице представлена. это что-то включало действие jquery post. Unfortunatley, пост действия Wouldnt завершить до формы после завершения и, таким образом, создает проблемы later- мой код выглядит следующим образом:

 $("form").submit(function() { 
       var result = 
        $.post('/Controller/Action', 
        { data: array.toString() } 
      }); 

Решение было

 event.preventDefault; 

непосредственно перед возвращением истинного, который останавливается сообщение формы до завершения вызова ajax.

Смежные вопросы