jQuery AJAX फॉर्म जमा करें


938

मेरे पास नाम orderproductFormऔर अपरिभाषित संख्याओं के साथ एक फॉर्म है।

मैं किसी तरह का jQuery.get या ajax या ऐसा कुछ भी करना चाहता हूं जो Ajax के माध्यम से एक पेज कॉल करे, और फॉर्म के सभी इनपुट के साथ भेजें orderproductForm

मुझे लगता है कि एक तरह से कुछ करना होगा

jQuery.get("myurl",
          {action : document.orderproductForm.action.value,
           cartproductid : document.orderproductForm.cartproductid.value,
           productid : document.orderproductForm.productid.value,
           ...

हालाँकि मुझे सभी फॉर्म इनपुट के बारे में ठीक से पता नहीं है। क्या कोई विशेषता, फ़ंक्शन या ऐसा कुछ है जो सिर्फ सभी फ़ॉर्म इनपुट भेजेगा?

जवाबों:


814

आप अजाक्स फॉर्म प्लगिन या jQuery serialize फ़ंक्शन से ajaxForm / ajaxSubmit फ़ंक्शन का उपयोग कर सकते हैं ।

अजाक्सफार्म :

$("#theForm").ajaxForm({url: 'server.php', type: 'post'})

या

$("#theForm").ajaxSubmit({url: 'server.php', type: 'post'})

ajaxForm सबमिट बटन दबाने पर भेजेगा। ajaxSubmit तुरंत भेजता है।

सीरियल करें :

$.get('server.php?' + $('#theForm').serialize())

$.post('server.php', $('#theForm').serialize())

AJAX क्रमांकन प्रलेखन यहाँ है


2
दिलचस्प विचार, हालाँकि, मैं जिस सर्वर कॉल पर कॉल कर रहा हूं, उसे नियंत्रित नहीं करता, इसलिए मैं इसे क्रमबद्ध डेटा नहीं भेज सकता
नाथन एच

25
हां आप कर सकते हैं, नाम महत्वपूर्ण नहीं है कि वह क्या करेगा जो हर फॉर्म-की और हर फॉर्म-वैरिएबल के जोड़े को भेजेगा।

6
यह एक क्वेरी स्ट्रिंग में क्रमबद्ध है, ठीक उसी तरह जैसे आप GET कॉल में मैन्युअल रूप से सरणी में डाल रहे हैं। यही आप चाहते हैं, मुझे पूरा यकीन है।
JAL

1
oooh मैं देखता हूं, मैं इस स्ट्रिंग को गेट कॉल में URL के अंत में जोड़ता हूं। मैं PHP serialize सोच रहा था। माफ़ करना। धन्यवाद!
नाथन एच

238
.ajaxSubmit()/ .ajaxForm()कोर jQuery फ़ंक्शंस नहीं हैं
यारिन

1399

यह एक साधारण संदर्भ है:

// this is the id of the form
$("#idForm").submit(function(e) {

    e.preventDefault(); // avoid to execute the actual submit of the form.

    var form = $(this);
    var url = form.attr('action');

    $.ajax({
           type: "POST",
           url: url,
           data: form.serialize(), // serializes the form's elements.
           success: function(data)
           {
               alert(data); // show response from the php script.
           }
         });


});

मुझे उम्मीद है इससे आपको मदद मिली होगी।


46
लेकिन form.serialize () <इनपुट प्रकार = "फ़ाइल"> पोस्ट कर सकते हैं नहीं IE में
macio.Jun

2
सामान्य रूप प्रस्तुत करने के लिए शानदार जवाब!
शेक गीक

1
@ BjørnBørresen के समान, type: $(this).attr('method')यदि आप methodअपने प्रपत्र पर विशेषता का उपयोग करते हैं , तो भी आप उपयोग कर सकते हैं ।
djule5 18

2
उल्लेखनीय है कि चूंकि jQuery 1.8, .success, .error और .complete के बाद से .done, .fail और .always के पक्ष में depreccre हैं।
एडम

2
@ जॉनकेरी की टिप्पणी - महान लेख, ऐसा लगता है कि यह अब उपलब्ध नहीं है। यहाँ jQuery के घटनाक्रम का एक संग्रह है : स्टॉप (मिस) रिटर्न
फ़ाल्स

455

प्रपत्र तत्व पर परिभाषित विशेषताओं का उपयोग करते हुए एक और समान समाधान:

<form id="contactForm1" action="/your_url" method="post">
    <!-- Form input fields here (do not forget your name attributes). -->
</form>

<script type="text/javascript">
    var frm = $('#contactForm1');

    frm.submit(function (e) {

        e.preventDefault();

        $.ajax({
            type: frm.attr('method'),
            url: frm.attr('action'),
            data: frm.serialize(),
            success: function (data) {
                console.log('Submission was successful.');
                console.log(data);
            },
            error: function (data) {
                console.log('An error occurred.');
                console.log(data);
            },
        });
    });
</script>

यदि नाम विशेषता में ""। (सर्वर-साइड आवश्यकता, मेरा विचार नहीं)।
जोसेफ एंजेलफ्रॉस्ट

इसे पूरा करने के लिए एक त्रुटि कॉलबैक शामिल करें। किसी को कभी नहीं पता होता है कि कब कोई त्रुटि हो जाएगी, इसका हमेशा हिसाब रखना चाहिए।
ऐरोन-कोडिंग

1
यदि आप विधि या क्रिया सेट नहीं करते हैं, तो वे getक्रमशः और वर्तमान URL के लिए डिफ़ॉल्ट हैं। इस धारणा को कोड में जोड़ने के साथ कर सकता है।
rybo111

1
प्रति jQuery प्रलेखन ( api.jquery.com/submit ), frm.submit (फ़ंक्शन (घटना) {..}); frm.on ("सबमिट", फ़ंक्शन (ईवेंट) {..}) के बराबर है ;; मेरे लिए उत्तरार्द्ध अधिक पठनीय है क्योंकि यह स्पष्ट है कि आप किसी ईवेंट हैंडलर को ईवेंट को निकालते समय निष्पादित किए जाने वाले तत्व में संलग्न कर रहे हैं।
mehmet

177

कुछ बातों को ध्यान में रखना आवश्यक है।

1. फॉर्म जमा करने के कई तरीके हैं

  • सबमिट बटन का उपयोग कर
  • एंटर दबाकर
  • जावास्क्रिप्ट में सबमिट ईवेंट ट्रिगर करके
  • संभवतः डिवाइस या भविष्य के डिवाइस के आधार पर अधिक।

इसलिए हमें फॉर्म सबमिट इवेंट में बाँधना चाहिए , न कि बटन क्लिक इवेंट। यह अब और भविष्य में सभी उपकरणों और सहायक तकनीकों पर हमारे कोड को सुनिश्चित करेगा।

2. हिजक्स

उपयोगकर्ता के पास जावास्क्रिप्ट सक्षम नहीं हो सकता है। यहां एक हिजाक्स पैटर्न अच्छा है, जहां हम धीरे-धीरे जावास्क्रिप्ट का उपयोग करके फॉर्म को नियंत्रित करते हैं, लेकिन जावास्क्रिप्ट के विफल होने पर इसे छोड़ दें।

हमें URL और विधि को फ़ॉर्म से खींचना चाहिए, इसलिए यदि HTML बदलता है, तो हमें जावास्क्रिप्ट को अपडेट करने की आवश्यकता नहीं है।

3. विनीत जावास्क्रिप्ट

Event.preventDefault () का उपयोग करने के बजाय रिटर्न गलत है अच्छा अभ्यास है क्योंकि यह घटना को बुलबुला करने की अनुमति देता है। यह अन्य लिपियों को घटना में बाँधने की सुविधा देता है, उदाहरण के लिए एनालिटिक्स लिपियाँ जो उपयोगकर्ता के इंटरैक्शन की निगरानी कर सकती हैं।

गति

हमें अपनी स्क्रिप्ट इनलाइन सम्मिलित करने के बजाय आदर्श रूप से एक बाहरी स्क्रिप्ट का उपयोग करना चाहिए। हम इसे स्क्रिप्ट टैग का उपयोग करके पृष्ठ के मुख्य भाग में लिंक कर सकते हैं, या गति के लिए पृष्ठ के नीचे लिंक कर सकते हैं। स्क्रिप्ट को चुपचाप उपयोगकर्ता अनुभव को बढ़ाना चाहिए, रास्ते में नहीं आना चाहिए।

कोड

मान लें कि आप उपरोक्त सभी से सहमत हैं, और आप सबमिट ईवेंट को पकड़ना चाहते हैं, और इसे AJAX (एक हाईजैक पैटर्न) के माध्यम से संभालना चाहते हैं, तो आप ऐसा कुछ कर सकते हैं:

$(function() {
  $('form.my_form').submit(function(event) {
    event.preventDefault(); // Prevent the form from submitting via the browser
    var form = $(this);
    $.ajax({
      type: form.attr('method'),
      url: form.attr('action'),
      data: form.serialize()
    }).done(function(data) {
      // Optionally alert the user of success here...
    }).fail(function(data) {
      // Optionally alert the user of an error here...
    });
  });
});

जब भी आप जावास्क्रिप्ट का उपयोग करके किसी चीज़ की तरह उपयोग कर सकते हैं, तब आप मैन्युअल रूप से ट्रिगर कर सकते हैं:

$(function() {
  $('form.my_form').trigger('submit');
});

संपादित करें:

मुझे हाल ही में ऐसा करना पड़ा और एक प्लगइन लिखना समाप्त कर दिया।

(function($) {
  $.fn.autosubmit = function() {
    this.submit(function(event) {
      event.preventDefault();
      var form = $(this);
      $.ajax({
        type: form.attr('method'),
        url: form.attr('action'),
        data: form.serialize()
      }).done(function(data) {
        // Optionally alert the user of success here...
      }).fail(function(data) {
        // Optionally alert the user of an error here...
      });
    });
    return this;
  }
})(jQuery)

अपने फ़ॉर्म टैग में डेटा-ऑटोसुबमिट विशेषता जोड़ें और आप ऐसा कर सकते हैं:

एचटीएमएल

<form action="/blah" method="post" data-autosubmit>
  <!-- Form goes here -->
</form>

जे एस

$(function() {
  $('form[data-autosubmit]').autosubmit();
});

2
मैं 'किए गए' और 'विफल' कार्यों के लिए कॉलबैक कैसे जोड़ सकता हूं? $ ('फ़ॉर्म [डेटा-ऑटोसुमिट]') की तरह कुछ। ऑटोसुबमिट ()। किया (फ़ंक्शन (... ...); यह संभव है?
क्रूसेडर

1
हाय @Crusader - निश्चित रूप से, इस प्लगइन को वापस करने के बजाय, आप इसे ajax ईवेंट में वापस कर सकते हैं, फिर आप इसे सही पर चेन कर सकते हैं। वैकल्पिक रूप से आपके पास प्लगइन एक सफलता कॉलबैक प्राप्त कर सकता है।
Superluminary

मैं यह नहीं देखता कि यह कैसे होता है ".. यदि यह विफल हो जाता है तो जावास्क्रिप्ट को यहाँ छोड़ दें"?
mehmet

@mmatt - यदि जावास्क्रिप्ट अक्षम है, तो फ़ॉर्म अभी भी एक फ़ॉर्म है। उपयोगकर्ता सबमिट पर क्लिक करता है और एक नियमित ब्राउज़र आधारित फ़ॉर्म सबमिशन होता है। हम इसे प्रगतिशील वृद्धि कहते हैं। यह आजकल इतनी बड़ी बात नहीं है क्योंकि आधुनिक स्क्रीन पाठक जावास्क्रिप्ट का समर्थन करते हैं।
superluminary

@ ममट - वादा कॉलबैक वैकल्पिक रूप से एक पैरामीटर प्राप्त करेगा जिसमें डेटा शामिल है।
सुपरल्यूमरी

41

आप फॉर्मडाटा का उपयोग भी कर सकते हैं (लेकिन IE में उपलब्ध नहीं):

var formData = new FormData(document.getElementsByName('yourForm')[0]);// yourForm: form selector        
$.ajax({
    type: "POST",
    url: "yourURL",// where you wanna post
    data: formData,
    processData: false,
    contentType: false,
    error: function(jqXHR, textStatus, errorMessage) {
        console.log(errorMessage); // Optional
    },
    success: function(data) {console.log(data)} 
});

इस प्रकार आप FormData का उपयोग करते हैं


8
मुझे लगता है कि FormData अब IE10 द्वारा समर्थित है। कुछ वर्षों में यह पसंदीदा समाधान होगा।
सुपरल्यूमिनरी

3
इस तरह से क्या फायदा?
हस्ताक्षर करें

1
@insign लाभ, कोई भी प्लगइन की आवश्यकता नहीं है, और कई आधुनिक ब्राउज़रों पर काम करता है।
खोई

4
@insign FormData फ़ाइलों को भी संभाल सकता है (यदि आपके फॉर्म में ऐसा कोई क्षेत्र है) जबकि क्रमबद्ध () केवल इसे अनदेखा करता है।
mehmet

अन टाइप किए गए टाइपर: 'फॉर्मडाटा' के निर्माण में विफल: पैरामीटर 1 'HTMLFormElement' प्रकार का नहीं है
rahim.nagori

28

सरल संस्करण (चित्र नहीं भेजता है)

<form action="/my/ajax/url" class="my-form">
...
</form>
<script>
    (function($){
        $("body").on("submit", ".my-form", function(e){
            e.preventDefault();
            var form = $(e.target);
            $.post( form.attr("action"), form.serialize(), function(res){
                console.log(res);
            });
        });
    )(jQuery);
</script>

किसी पेज पर किसी फॉर्म या सभी फॉर्म के अजाक्सिफिकेशन को कॉपी और पेस्ट करें

यह अल्फ्रेक्जव के उत्तर का एक संशोधित संस्करण है

  • यह jQuery> = 1.3.2 के साथ काम करेगा
  • दस्तावेज़ तैयार होने से पहले आप इसे चला सकते हैं
  • आप प्रपत्र को हटा और पुनः जोड़ सकते हैं और यह अभी भी काम करेगा
  • यह सामान्य रूप में उसी स्थान पर पोस्ट होगा, जो फ़ॉर्म की "कार्रवाई" विशेषता में निर्दिष्ट है

जावास्क्रिप्ट

jQuery(document).submit(function(e){
    var form = jQuery(e.target);
    if(form.is("#form-id")){ // check if this is the form that you want (delete this check to apply this to all forms)
        e.preventDefault();
        jQuery.ajax({
            type: "POST",
            url: form.attr("action"), 
            data: form.serialize(), // serializes the form's elements.
            success: function(data) {
                console.log(data); // show response from the php script. (use the developer toolbar console, firefox firebug or chrome inspector console)
            }
        });
    }
});

मैं अल्फ्रेक्जव के उत्तर को संपादित करना चाहता था, लेकिन इससे बहुत अधिक विचलित हो गया, इसलिए इसे एक अलग उत्तर के रूप में पोस्ट करने का फैसला किया।

फाइलें नहीं भेजता है, बटन का समर्थन नहीं करता है, उदाहरण के लिए बटन पर क्लिक करें (सबमिट बटन सहित) फॉर्म डेटा के रूप में अपना मूल्य भेजता है, लेकिन क्योंकि यह एक अजाक्स अनुरोध है बटन क्लिक पर नहीं भेजा जाएगा।

बटन का समर्थन करने के लिए आप सबमिट के बजाय वास्तविक बटन क्लिक पर कब्जा कर सकते हैं।

jQuery(document).click(function(e){
    var self = jQuery(e.target);
    if(self.is("#form-id input[type=submit], #form-id input[type=button], #form-id button")){
        e.preventDefault();
        var form = self.closest('form'), formdata = form.serialize();
        //add the clicked button to the form data
        if(self.attr('name')){
            formdata += (formdata!=='')? '&':'';
            formdata += self.attr('name') + '=' + ((self.is('button'))? self.html(): self.val());
        }
        jQuery.ajax({
            type: "POST",
            url: form.attr("action"), 
            data: formdata, 
            success: function(data) {
                console.log(data);
            }
        });
    }
});

सर्वर की ओर आप इस हेडर के साथ एक अजाक्स अनुरोध का पता लगा सकते हैं जो jperyHTTP_X_REQUESTED_WITH php के लिए सेट करता है

पीएचपी

if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
    //is ajax
}

यदि आप इस फॉर्म के साथ फाइल भेजना चाहते हैं तो यह कैसे काम करेगा?
यमी मदीना

1
@YamiMedina एक सरल समाधान नहीं है, आपको फ़ाइल डेटा के साथ एक अलग प्रारूप (मल्टीपार्ट प्रारूप) में पूरे अनुरोध को भेजने की आवश्यकता है
टिमो हुओवेंन

22

यह कोड फ़ाइल इनपुट के साथ भी काम करता है

$(document).on("submit", "form", function(event)
{
    event.preventDefault();        
    $.ajax({
        url: $(this).attr("action"),
        type: $(this).attr("method"),
        dataType: "JSON",
        data: new FormData(this),
        processData: false,
        contentType: false,
        success: function (data, status)
        {

        },
        error: function (xhr, desc, err)
        {


        }
    });        
});

3
बस फॉर्मेट नोट करने के लिए () IE10 + developer.mozilla.org/en-US/docs/Web/API/FormData
क्रिस हॉपकिंस

1
डेटाप्रकार: 'json' महत्वपूर्ण है कि आप form.serialize () का उपयोग करना चाहते हैं तो
डेविड मोरो

वाह, यह फॉर्मडाटा अद्भुत है! अगर किसी को जरूरत हो तो: Array.from(new FormData(form))इस फॉर्मेटा इटेटर पर पुनरावृत्त करें :)
टेस्ट 30

13

मैं वास्तव में पसंद इस जवाब से superluminary एक में और विशेष रूप से जिस तरह से वह लपेटा है समाधान jQuery प्लगइन। तो अति उपयोगी उत्तर के लिए अतिशय धन्यवाद । मेरे मामले में, हालाँकि, मैं एक ऐसा प्लगइन चाहता था, जो मुझे प्लग इन इनिशियलाइज़ होने पर विकल्पों के माध्यम से सफलता और त्रुटि ईवेंट हैंडलर को परिभाषित करने की अनुमति दे ।

तो यहाँ मैं क्या लेकर आया हूँ:

;(function(defaults, $, undefined) {
    var getSubmitHandler = function(onsubmit, success, error) {
        return function(event) {
            if (typeof onsubmit === 'function') {
                onsubmit.call(this, event);
            }
            var form = $(this);
            $.ajax({
                type: form.attr('method'),
                url: form.attr('action'),
                data: form.serialize()
            }).done(function() {
                if (typeof success === 'function') {
                    success.apply(this, arguments);
                }
            }).fail(function() {
                if (typeof error === 'function') {
                    error.apply(this, arguments);
                }
            });
            event.preventDefault();
        };
    };
    $.fn.extend({
        // Usage:
        // jQuery(selector).ajaxForm({ 
        //                              onsubmit:function() {},
        //                              success:function() {}, 
        //                              error: function() {} 
        //                           });
        ajaxForm : function(options) {
            options = $.extend({}, defaults, options);
            return $(this).each(function() {
                $(this).submit(getSubmitHandler(options['onsubmit'], options['success'], options['error']));
            });
        }
    });
})({}, jQuery);

इस प्लग मुझे बहुत आसानी से "ajaxify" पृष्ठ पर एचटीएमएल रूपों और प्रदान करने के लिए अनुमति देता है ऑनसबमिट , सफलता और त्रुटि प्रपत्र सबमिट की स्थिति के उपयोगकर्ता के लिए प्रतिक्रिया लागू करने के लिए ईवेंट हैंडलर्स। इसने प्लगइन को निम्नानुसार उपयोग करने की अनुमति दी:

 $('form').ajaxForm({
      onsubmit: function(event) {
          // User submitted the form
      },
      success: function(data, textStatus, jqXHR) {
          // The form was successfully submitted
      },
      error: function(jqXHR, textStatus, errorThrown) {
          // The submit action failed
      }
 });

ध्यान दें कि सफलता और त्रुटि घटना संचालकों को वही तर्क मिलते हैं जो आपको jQuery के अजाक्स विधि की संबंधित घटनाओं से प्राप्त होंगे ।


9

मुझे मेरे लिए निम्नलिखित मिला:

formSubmit('#login-form', '/api/user/login', '/members/');

कहाँ पे

function formSubmit(form, url, target) {
    $(form).submit(function(event) {
        $.post(url, $(form).serialize())
            .done(function(res) {
                if (res.success) {
                    window.location = target;
                }
                else {
                    alert(res.error);
                }
            })
            .fail(function(res) {
                alert("Server Error: " + res.status + " " + res.statusText);

            })
        event.preventDefault();
    });
}

यह पोस्ट को 'url' के रूप में मानता है, जो अजाक्स को देता है {success: false, error:'my Error to display'}

आप इसे अपनी इच्छानुसार अलग-अलग कर सकते हैं। बेझिझक उस स्निपेट का इस्तेमाल करें।


1
targetयहाँ के लिए क्या है ? आप AJAX के साथ एक फॉर्म क्यों प्रस्तुत करेंगे, केवल एक नए पृष्ठ पर पुनर्निर्देशित करने के लिए?
१२५२ --४

9

jQuery AJAX फॉर्म सबमिट करें, एक बटन पर क्लिक करने पर फॉर्म आईडी का उपयोग करके फॉर्म सबमिट करने के अलावा कुछ भी नहीं है

कृपया चरणों का पालन करें

चरण 1 - फॉर्म टैग में एक आईडी फ़ील्ड होना चाहिए

<form method="post" class="form-horizontal" action="test/user/add" id="submitForm">
.....
</form>

बटन जिसे आप क्लिक करने जा रहे हैं

<button>Save</button>

स्टेप 2 - सबमिट इवेंट jQuery में है जो फॉर्म सबमिट करने में मदद करता है। नीचे दिए गए कोड में हम HTML तत्व नाम से JSON अनुरोध तैयार कर रहे हैं ।

$("#submitForm").submit(function(e) {
    e.preventDefault();
    var frm = $("#submitForm");
    var data = {};
    $.each(this, function(i, v){
        var input = $(v);
        data[input.attr("name")] = input.val();
        delete data["undefined"];
    });
    $.ajax({
        contentType:"application/json; charset=utf-8",
        type:frm.attr("method"),
        url:frm.attr("action"),
        dataType:'json',
        data:JSON.stringify(data),
        success:function(data) {
            alert(data.message);
        }
    });
});

लाइव डेमो के लिए नीचे दिए गए लिंक पर क्लिक करें

JQuery AJAX का उपयोग करके फॉर्म कैसे जमा करें?


5

उपयोग करने पर विचार करें closest

$('table+table form').closest('tr').filter(':not(:last-child)').submit(function (ev, frm) {
        frm = $(ev.target).closest('form');
        $.ajax({
            type: frm.attr('method'),
            url: frm.attr('action'),
            data: frm.serialize(),
            success: function (data) {
                alert(data);
            }
        })
        ev.preventDefault();
    });

5

मुझे पता है कि यह एक jQueryसंबंधित प्रश्न है, लेकिन अब जेएस ईएस 6 के साथ चीजें बहुत आसान हैं। चूंकि कोई शुद्ध javascriptउत्तर नहीं है, मैंने सोचा कि मैं javascriptइस पर एक सरल शुद्ध समाधान जोड़ सकता हूं , जो कि मेरी राय में fetch()एपीआई का उपयोग करके बहुत साफ है। यह नेटवर्क अनुरोधों को लागू करने का एक आधुनिक तरीका है। आपके मामले में, चूंकि आपके पास पहले से ही एक फार्म एलिमेंट है, इसलिए हम इसे केवल अपने अनुरोध के निर्माण के लिए उपयोग कर सकते हैं।

const form = document.forms["orderproductForm"];
const formInputs = form.getElementsByTagName("input"); 
let formData = new FormData(); 
for (let input of formInputs) {
    formData.append(input.name, input.value); 
}

fetch(form.action,
    {
        method: form.method,
        body: formData
    })
    .then(response => response.json())
    .then(data => console.log(data))
    .catch(error => console.log(error.message))
    .finally(() => console.log("Done"));

4

एकाधिक फॉर्मडेटा भेजने से बचने के लिए:

फॉर्म जमा करने से पहले, ईवेंट को सबमिट करना न भूलें, उपयोगकर्ता को एक से अधिक बार sumbit फ़ंक्शन कॉल कर सकता है, शायद वह कुछ भूल गया था, या एक सत्यापन त्रुटि थी।

 $("#idForm").unbind().submit( function(e) {
  ....

4

आप उपयोग कर रहे हैं रूप .serialize () - आप इस तरह प्रत्येक प्रपत्र तत्व एक नाम देने की जरूरत है:

<input id="firstName" name="firstName" ...

और फॉर्म इस तरह से क्रमबद्ध हो जाता है:

firstName=Chris&lastName=Halcrow ...

4

आप इसे नीचे की तरह सबमिट फ़ंक्शन पर उपयोग कर सकते हैं।

HTML फॉर्म

<form class="form" action="" method="post">
    <input type="text" name="name" id="name" >
    <textarea name="text" id="message" placeholder="Write something to us"> </textarea>
    <input type="button" onclick="return formSubmit();" value="Send">
</form>

jQuery फ़ंक्शन:

<script>
    function formSubmit(){
        var name = document.getElementById("name").value;
        var message = document.getElementById("message").value;
        var dataString = 'name='+ name + '&message=' + message;
        jQuery.ajax({
            url: "submit.php",
            data: dataString,
            type: "POST",
            success: function(data){
                $("#myForm").html(data);
            },
            error: function (){}
        });
    return true;
    }
</script>

अधिक जानकारी और नमूने के लिए यहां जाएं: http://www.spiderscode.com/simple-ajax-contact-form/


2

यह ओपी के सवाल का जवाब नहीं है,
लेकिन अगर आप स्थैतिक रूप डोम का उपयोग नहीं कर सकते हैं, तो आप इस तरह की कोशिश भी कर सकते हैं।

var $form = $('<form/>').append(
    $('<input/>', {name: 'username'}).val('John Doe'),
    $('<input/>', {name: 'user_id'}).val('john.1234')
);

$.ajax({
    url: 'api/user/search',
    type: 'POST',
    contentType: 'application/x-www-form-urlencoded',
    data: $form.serialize(),
    success: function(data, textStatus, jqXHR) {
        console.info(data);
    },
    error: function(jqXHR, textStatus, errorThrown) {
        var errorMessage = jqXHR.responseText;
        if (errorMessage.length > 0) {
            alert(errorMessage);
        }
    }
});

2

प्रयत्न

fetch(form.action,{method:'post', body: new FormData(form)});


1

बस एक दोस्ताना अनुस्मारक जो dataएक वस्तु हो सकती है:

$('form#foo').submit(function () {
    $.ajax({
        url: 'http://foo.bar/some-ajax-script',
        type: 'POST',
        dataType: 'json',
        data: {
            'foo': 'some-foo',
            'bar': 'some-bar'
        }
    }).always(function (data) {
        console.log(data);
    });

    return false;
});

1

जावास्क्रिप्ट

(function ($) {
    var form= $('#add-form'),
      input = $('#exampleFormControlTextarea1');


   form.submit(function(event) {

       event.preventDefault(); 

       var req = $.ajax({
           url: form.attr('action'),
           type: 'POST',
           data: form.serialize()
       });
    req.done(function(data) {
       if (data === 'success') {
           var li = $('<li class="list-group-item">'+ input.val() +'</li>');
            li.hide()
                .appendTo('.list-group')
                .fadeIn();
            $('input[type="text"],textarea').val('');
        }
   });
});


}(jQuery));

एचटीएमएल

    <ul class="list-group col-sm-6 float-left">
            <?php
            foreach ($data as $item) {
                echo '<li class="list-group-item">'.$item.'</li>';
            }
            ?>
        </ul>

        <form id="add-form" class="col-sm-6 float-right" action="_inc/add-new.php" method="post">
            <p class="form-group">
                <textarea class="form-control" name="message" id="exampleFormControlTextarea1" rows="3" placeholder="Is there something new?"></textarea>
            </p>
            <button type="submit" class="btn btn-danger">Add new item</button>
        </form>

-21

सबमिट इवेंट भी है, जिसे इस $ ("# form_id") की तरह ट्रिगर किया जा सकता है। सबमिट करें ()। यदि HTML में फॉर्म पहले से ही अच्छी तरह से दर्शाया गया है तो आप इस विधि का उपयोग करेंगे। आप बस पृष्ठ में पढ़ेंगे, सामान के साथ फ़ॉर्म इनपुट को पॉप्युलेट करेंगे, फिर .submit () कॉल करें। यह फ़ॉर्म की घोषणा में परिभाषित विधि और क्रिया का उपयोग करेगा, इसलिए आपको इसे अपने जावास्क्रिप्ट में कॉपी करने की आवश्यकता नहीं है।

उदाहरण


58
यदि आप अपनी पोस्ट को हटाते हैं, तो आपको पेनल्टी पॉइंट मिलते हैं जो आपसे वापस ले लिए गए हैं।
स्पार्कसाइडर

2
यह फॉर्म जमा करेगा, लेकिन AJAX के माध्यम से नहीं, इसलिए इस सवाल का जवाब नहीं है।
अतिमहत्वाकांक्षी

11
@ स्पाइडर ने क्या कहा, इसके अलावा आपको "पीयर प्रेशर" नामक एक अच्छा बैज मिलता है
nurettin
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.