Как использовать jQuery.ajax для моей формы action

Я изменил свой стиль кодирования для php и jQuery, но моя регистрация

$("#reg_form_company").bind("submit", function() {
    $.fancybox.showActivity();
    $.ajax({
            type     : "POST",
            cache    : false,
            url      : $(this).attr('action'),
            data     : $(this).serializeArray(),
            success  : function(data) {
                $(".printArea").empty().append(data).css('visibility','visible');
            }
    });
    return false;
});

Тогда это моя форма

<form id="reg_form_company" action="index.php?module=register&actionregister" method="post" >
      <input>[...]</input>
</form>

Затем после нажатия кнопки "Отправить" это не сработает, я полагаю, что кто-то может помочь мне решить эту проблему, потому что $.ajax может запутать POST (для входов) и GET (для параметров формы "действия" )

Я ценю вашу помощь, вы также можете изменить весь код jQuery, если это необходимо.

Извините, что парни не включили #reg_form_company, а fancybox

Ответ 1

Вам нужно сделать что-то вроде этого: http://jsfiddle.net/xSJTs/2/

$('form').on('submit',function(e){
    e.preventDefault();
    $.ajax({
        type     : "POST",
        cache    : false,
        url      : $(this).attr('action'),
        data     : $(this).serialize(),
        success  : function(data) {
            $(".printArea").empty().append(data).css('visibility','visible');
        }
    });

});

Вы должны использовать serialize() вместо serializeArray(). serializeArray() создает JavaScript-объект, serialize() создает строку запроса.

Сериализация: http://api.jquery.com/serialize/

SerializeArray: http://api.jquery.com/serializeArray/

В основном вы ждете, пока форма не будет отправлена, а затем вы прервите ее (e.preventDefault();).

Ответ 2

Вы должны перехватить событие click/submit для своей формы и обратиться к форме, как показано ниже:

 $("#myForm").submit(function(){
    var $form = $(this);

    $.ajax({
     type     : "POST",
     cache    : false,
     url      : $form.attr('action'),
     data     : $form.serializeArray(),
     success  : function(data) {
         $(".printArea").empty().append(data).css('visibility','visible');
     }
    });
 })

И добавьте идентификатор в вашу форму, например:

<form id="myForm" action="index.php?module=register&actionregister" method="post" >
      <input>[...]</input>
</form>

Ответ 3

вы должны ссылаться на свою форму вместо $(this)

введите форму id или класс ex:

<form action="index.php?module=register&actionregister" method="post" id="MyForm">
      <input>[...]</input>
</form>

и в JQuery:

$.ajax({
        type     : "POST",
        cache    : false,
        url      : $('#MyForm').attr('action'),
        data     : $('#MyForm').serializeArray(),
        success  : function(data) {
            $(".printArea").empty().append(data).css('visibility','visible');
        }
});

Ответ 4

    //This is still showing the cgi output of my script in the browser
 $('#myForm').submit(function()){
                 $('#myForm').preventDefault();
        $.ajax({
            type     : "POST",
            cache    : false,
            url      : $('#myForm').attr('action'),
            data     : $('#myForm').serialize(),
            success  : function(data) {
                $(".printArea").empty().append(data).css('visibility','visible');
            };

    <form id = "myForm" action="cgi-bin/matt/matt-test.cgi?module=register&actionregister" method ="post">