Jquery AJAX का उपयोग करके HTML फ़ॉर्म सबमिट करना


107

इस उदाहरण का उपयोग करके AJAX का उपयोग करके HTML फॉर्म सबमिट करने की कोशिश कर रहा हूँ ।

मेरा HTML कोड:

<form id="formoid" action="studentFormInsert.php" title="" method="post">
    <div>
        <label class="title">First Name</label>
        <input type="text" id="name" name="name" >
    </div>
    <div>
        <label class="title">Name</label>
        <input type="text" id="name2" name="name2" >
    </div>
    <div>
        <input type="submit" id="submitButton"  name="submitButton" value="Submit">
    </div>
</form>

मेरी स्क्रिप्ट:

<script type="text/javascript">
    $(document).ready(function() { 
        $('#formoid').ajaxForm(function() { 
            alert("Thank you for your comment!"); 
        }); 
    });
</script>

यह काम नहीं कर रहा है, मुझे अलर्ट मैसेज भी नहीं मिल रहा है और जब मैं सबमिट करता हूं तो मैं दूसरे पेज पर रीडायरेक्ट नहीं करना चाहता, मैं सिर्फ अलर्ट मैसेज दिखाना चाहता हूं।

क्या इसे करने का एक सरल तरीका है?

पुनश्च: मेरे पास कई क्षेत्र हैं, मैंने उदाहरण के तौर पर दो को रखा है।


क्या आप "फ़ॉर्म" html घटक के साथ दूर नहीं कर सकते हैं? और आने वाले बटन के क्लिक हैंडलर पर पोस्ट करने के लिए jquery का उपयोग करें
harshvchawla

जवाबों:


177

AJAX का त्वरित विवरण

AJAX बस एसिंक्रोनस JSON या XML है (अधिकांश नई स्थितियों में JSON)। क्योंकि हम एक ASYNC कार्य कर रहे हैं, हम संभवतः अपने उपयोगकर्ताओं को अधिक सुखद UI अनुभव प्रदान करेंगे। इस विशिष्ट मामले में हम AJAX का उपयोग करके एक FORM सबमिशन कर रहे हैं।

सच में जल्दी से वहाँ 4 सामान्य वेब कार्रवाई कर रहे हैं GET, POST, PUT, और DELETE; इन के साथ सीधे अनुरूप SELECT/Retreiving DATA, INSERTING DATA, UPDATING/UPSERTING DATA, और DELETING DATA। एक डिफ़ॉल्ट HTML / ASP.Net वेबफॉर्म / PHP / पायथन या कोई अन्य formकार्रवाई "सबमिट" करना है जो एक POST कार्रवाई है। इस वजह से नीचे सभी एक POST करने का वर्णन करेंगे। कभी-कभी हालांकि http के साथ आप एक अलग कार्रवाई चाहते हैं और संभवतः उपयोग करना चाहते हैं .ajax

विशेष रूप से आपके लिए मेरा कोड (कोड टिप्पणियों में वर्णित):

/* attach a submit handler to the form */
$("#formoid").submit(function(event) {

  /* stop form from submitting normally */
  event.preventDefault();

  /* get the action attribute from the <form action=""> element */
  var $form = $(this),
    url = $form.attr('action');

  /* Send the data using post with element id name and name2*/
  var posting = $.post(url, {
    name: $('#name').val(),
    name2: $('#name2').val()
  });

  /* Alerts the results */
  posting.done(function(data) {
    $('#result').text('success');
  });
  posting.fail(function() {
    $('#result').text('failed');
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<form id="formoid" action="studentFormInsert.php" title="" method="post">
  <div>
    <label class="title">First Name</label>
    <input type="text" id="name" name="name">
  </div>
  <div>
    <label class="title">Last Name</label>
    <input type="text" id="name2" name="name2">
  </div>
  <div>
    <input type="submit" id="submitButton" name="submitButton" value="Submit">
  </div>
</form>

<div id="result"></div>


प्रलेखन

JQuery वेबसाइट $.postप्रलेखन से।

उदाहरण : ajax अनुरोधों का उपयोग करके फ़ॉर्म डेटा भेजें

$.post("test.php", $("#testform").serialize());

उदाहरण : ajax का उपयोग करके एक फॉर्म पोस्ट करें और परिणाम को div में रखें

<!DOCTYPE html>
<html>
    <head>
        <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
    </head>
    <body>
        <form action="/" id="searchForm">
            <input type="text" name="s" placeholder="Search..." />
            <input type="submit" value="Search" />
        </form>
        <!-- the result of the search will be rendered inside this div -->
        <div id="result"></div>
        <script>
            /* attach a submit handler to the form */
            $("#searchForm").submit(function(event) {

                /* stop form from submitting normally */
                event.preventDefault();

                /* get some values from elements on the page: */
                var $form = $(this),
                    term = $form.find('input[name="s"]').val(),
                    url = $form.attr('action');

                /* Send the data using post */
                var posting = $.post(url, {
                    s: term
                });

                /* Put the results in a div */
                posting.done(function(data) {
                    var content = $(data).find('#content');
                    $("#result").empty().append(content);
                });
            });
        </script>
    </body>
</html>

महत्वपूर्ण लेख

OAuth या न्यूनतम HTTPS (TLS / SSL) का उपयोग किए बिना कृपया सुरक्षित डेटा (क्रेडिट कार्ड नंबर, SSN, कुछ भी जो PCI, HIPAA या लॉगिन से संबंधित है) के लिए इस पद्धति का उपयोग न करें


@ abc123 मैं इसमें प्राधिकरण अनुरोध शीर्षलेख कैसे सेट कर सकता हूं? मैंने कोशिश की, beforeSend: function (xhr) { xhr.setRequestHeader("Authorization", "*****"); xhr.setRequestHeader("contentType", "application/json;charset=UTF-8"); },लेकिन इसने कोई भी हेडर सेट नहीं किया
महेंद्र कवड़े

@mahendrakawde आपको उपयोग करने की आवश्यकता होगी, $.ajaxजिसका मैं एक उदाहरण लिख सकता हूँ यदि आप चाहें, लेकिन यह वास्तव में एक अलग प्रश्न है
abc123

@ abc123 मेरे पास इसके लिए शुरू किया गया धागा है। मुझे इसे आपके साथ साझा करने दें।
महेंद्र कावड़े

1
क्या हम फॉर्म पोस्ट का उपयोग करने से बच सकते हैं और बस एक बटन पर jquery पोस्ट कर सकते हैं (जो एक html बटन है जो किसी भी फॉर्म डिव का हिस्सा नहीं है) हैंडलर पर क्लिक करें। इस तरह से event.preventdefault अभ्यस्त या तो की जरूरत है?
harshvchawla

1
@harshvchawla, लेकिन फिर html तत्व से खींचे गए चरों के लिए आपकी चुनिंदा क्वेरी अलग है
abc123

26
var postData = "text";
      $.ajax({
            type: "post",
            url: "url",
            data: postData,
            contentType: "application/x-www-form-urlencoded",
            success: function(responseData, textStatus, jqXHR) {
                alert("data saved")
            },
            error: function(jqXHR, textStatus, errorThrown) {
                console.log(errorThrown);
            }
        })

1
सफलता / पूरा कार्य कॉल पूरा होने पर होगा और इसे सर्वर से 200 ओके प्राप्त होगा
वरुण एस

hi मैंने डाला: $ (दस्तावेज़)। url ", data: postData, contentType:" studentFormInsert.php ", सफलता: फ़ंक्शन (responseData, textStatus, jqXHR) {चेतावनी (" डेटा सहेजा गया ")}, त्रुटि: फ़ंक्शन (jqXHR, textStatus, errorThrown) {कंसोल.लॉग () errorThrown);}})));) वास्तव में काम नहीं कर रहा है .. php पक्ष पर किसी भी संशोधन की आवश्यकता है
ओलिवेरा

4
अच्छा उदाहरण और अच्छी तरह से लिखा गया है, कृपया इसके साथ कुछ उत्तर पोस्ट करें, हालांकि कोई स्पष्टीकरण नहीं के साथ केवल उदाहरण कोड।
abc123

2
मुझे नहीं लगता कि मुझे उस फॉर्म के साथ कैसे जुड़ना है जो मैं पोस्ट करना चाहता हूं
Piotr Kamoda

कोई स्पष्टीकरण क्यों नहीं है?
रिच

3

यदि आप जोड़ते हैं:

jquery.form.min.js

आप बस यह कर सकते हैं:

<script>
$('#myform').ajaxForm(function(response) {
  alert(response);
});

// this will register the AJAX for <form id="myform" action="some_url">
// and when you submit the form using <button type="submit"> or $('myform').submit(), then it will send your request and alert response
</script>

ध्यान दें:

आप सरल $ ('FORM') का उपयोग कर सकते हैं। जैसा कि ऊपर पोस्ट में सुझाया गया है, उसे क्रमबद्ध करें (), लेकिन वह फ़ाइल INPUTS ... ajaxForm () के लिए काम नहीं करेगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.