2012-04-06 38 views
10

tôi đã thay đổi phong cách mã hóa của tôi cho php và jQuery, nhưng đăng ký của tôiLàm thế nào để sử dụng jQuery ajax để hình thức hành động của tôi

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

Sau đó, đây là mẫu của tôi

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

Sau đó, sau khi nhấp vào " Gửi "nút, nó không hoạt động, tôi giả định rằng ai đó có thể giúp tôi giải quyết vấn đề này, coz $ .ajax có thể nhầm lẫn về POST (cho đầu vào) và GET (cho các tham số của" hành động "hình thức)

Tôi đánh giá cao bạn r trợ giúp, bạn cũng có thể sửa đổi toàn bộ mã jQuery nếu nó được yêu cầu.

kẻ Xin lỗi vì không bao gồm cáC#reg_form_company, và Fancybox

+0

Tôi đã xem xét kỹ mã của bạn và tôi nghĩ rằng tôi đã tìm thấy lỗi của bạn. Hãy xem câu trả lời của tôi: http://stackoverflow.com/questions/10041496/how-to-use-jquery-ajax-to-my-forms-action/10041588#10041588 – Alex

Trả lời

5

Bạn phải chặn các nhấp chuột/nộp sự kiện cho hình thức của bạn và tham khảo các hình thức như hình dưới đây:

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

Và thêm một id mẫu của bạn như:

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

yah sir, tôi đã có id, nhưng các $ .ajax cant đạt mã phía máy chủ, trong khi Nếu tôi tắt jQuery, php đang làm việc ... – daison12006013

1

bạn phải refere hình thức của bạn thay vì $(this)

cho hình thức của bạn một id hoặc class ví dụ:

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

và trong JQuery:

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

yah sir, tôi đã có id, nhưng $ .ajax cant đạt được mã phía máy chủ , trong khi Nếu tôi tắt jQuery, php đang hoạt động ... – daison12006013

28

Bạn cần phải làm một cái gì đó như thế này: 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'); 
     } 
    }); 

}); 

Bạn phải sử dụng serialize() thay vì serializeArray(). serializeArray() tạo đối tượng JavaScript, serialize() tạo chuỗi truy vấn.

Serialize: http://api.jquery.com/serialize/

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

Về cơ bản bạn đợi cho đến khi mẫu được gửi và sau đó làm gián đoạn quá (e.preventDefault();).

+0

NB: Nút bạn đang sử dụng để kích hoạt sự kiện khiến việc gửi biểu mẫu qua bài đăng ajax không nên thuộc loại ** gửi **! Khác điều này sẽ luôn thất bại. – Biki

0
//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"> 
Các vấn đề liên quan