2012-04-06 17 views
10

मैं php और jQuery के लिए मेरे कोडिंग शैली बदल गया है, लेकिन मेरे पंजीकरण करने के लिए jQuery .ajax का उपयोग कैसे करेंमेरी फ़ॉर्म की ऐसी गतिविधि

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

तो क्लिक करने के बाद कि " सबमिट करें "बटन, यह काम नहीं करता है, मुझे लगता है कि कोई मुझे इस समस्या को हल करने में मदद कर सकता है, $ coz .ajax POST (इनपुट के लिए) और GET (" कार्रवाई "फ़ॉर्म के पैरामीटर के लिए) भ्रमित हो सकता है

मैं आपके लिए सराहना करता हूं आर मदद, यदि आवश्यक हो तो आप पूरे jQuery कोड को भी संशोधित कर सकते हैं।

क्षमा करें लोग के रूप में bellow से पता चला #reg_form_company, और fancybox

+0

मैंने आपके कोड पर एक दूसरा रूप लिया और मुझे लगता है कि मुझे आपकी गलती मिली है। मेरे उत्तर पर एक नज़र डालें: http://stackoverflow.com/questions/10041496/how-to-use-jquery-ajax-to-my-forms-action/10041588#10041588 – Alex

उत्तर

5

आप क्लिक रोकना चाहिए/अपने फार्म के लिए घटना सबमिट करें और प्रपत्र उल्लेख सहित नहीं के लिए:

$("#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> 
+0

या महोदय, मेरे पास पहले से ही आईडी है, लेकिन $ .ajax सर्वर साइड कोड तक नहीं पहुंच सकता है, जबकि अगर मैंने jQuery बंद कर दिया है, तो PHP काम कर रहा है ... – daison12006013

1

आप $(this)

के बजाय अपने प्रपत्र refere चाहिए

आपके प्रपत्र एक आईडी या वर्ग पूर्व दे:

<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'); 
     } 
}); 
+0

या महोदय, मेरे पास पहले से ही आईडी है, लेकिन $ .ajax सर्वर साइड कोड तक नहीं पहुंच सकता , जबकि अगर मैंने jQuery बंद कर दिया है, तो PHP काम कर रहा है ... – daison12006013

28

आप कुछ इस तरह करने की जरूरत है: 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() एक जावास्क्रिप्ट-ऑब्जेक्ट बनाता है, serialize() एक क्वेरी-स्ट्रिंग बनाता है।

को क्रमानुसार: http://api.jquery.com/serialize/

SerializeArray: जब तक फ़ॉर्म सबमिट किया जाता http://api.jquery.com/serializeArray/

मूल रूप से आप प्रतीक्षा करें और फिर आप इसे (e.preventDefault();) बीच में।

+0

एनबी: जिस बटन का उपयोग आप एजेक्स पोस्ट के माध्यम से फ़ॉर्म जमा करने का कारण बनते हैं, उसे टाइप करने के लिए ** ** ** ** नहीं होना चाहिए! अन्यथा यह हमेशा असफल रहेगा। – 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"> 
संबंधित मुद्दे