Как использовать 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">