जावास्क्रिप्ट फॉर्म में एकाधिक चयनित विकल्प कैसे लौटाएँ

जावास्क्रिप्ट फॉर्म में एकाधिक चयनित विकल्प कैसे लौटाएँ
जावास्क्रिप्ट फॉर्म में एकाधिक चयनित विकल्प कैसे लौटाएँ

जावास्क्रिप्ट फॉर्म में एकाधिक चयनों को संभालना

जावास्क्रिप्ट में फॉर्म के साथ काम करना एक सामान्य कार्य है, खासकर जब उपयोगकर्ता इनपुट को संभालना होता है जिसे सर्वर पर सबमिट करने की आवश्यकता होती है। निपटने के दौरान एक सामान्य चुनौती उत्पन्न होती है एकाधिक चयन प्रपत्रों में, जैसे "एकाधिक चयन करें" ड्रॉपडाउन का उपयोग करना। मूल प्रपत्र प्रबंधन विधियाँ सभी चयनित विकल्पों को कैप्चर नहीं कर सकती हैं, जिसके परिणामस्वरूप केवल अंतिम चयनित विकल्प ही लौटाया जाएगा।

इस लेख में, हम यह सुनिश्चित करने के लिए एक व्यावहारिक दृष्टिकोण का पता लगाएंगे कि सभी चयनित विकल्प बहु-चयन ड्रॉपडाउन जावास्क्रिप्ट का उपयोग करके कैप्चर किया गया और ठीक से सबमिट किया गया। हम एक कामकाजी फॉर्म को एक ऐसे फॉर्म में ढालने के लिए आवश्यक संशोधनों से गुजरेंगे जो कई चयनों को प्रभावी ढंग से संभाल सके। यह दृष्टिकोण यह भी सुनिश्चित करता है कि डेटा को प्रसंस्करण के लिए PHP एपीआई में निर्बाध रूप से सबमिट किया जा सकता है।

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

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

आज्ञा उपयोग का उदाहरण
FormData() यह कंस्ट्रक्टर एक नया फॉर्मडेटा ऑब्जेक्ट बनाता है जो फॉर्म डेटा तत्वों को कैप्चर करता है। इसका उपयोग प्रत्येक इनपुट फ़ील्ड पर मैन्युअल रूप से पुनरावृत्ति किए बिना, फ़ाइल अपलोड सहित फॉर्म इनपुट को आसानी से इकट्ठा करने के लिए किया जाता है।
getElementsByName() विशिष्ट के साथ HTML तत्वों को पुनः प्राप्त करता है नाम गुण। स्क्रिप्ट में इसका उपयोग लक्ष्य करने के लिए किया जाता है बहु-चयन सभी चयनित विकल्पों को कैप्चर करने के लिए तत्व।
options[] किसी चयनित तत्व के व्यक्तिगत विकल्पों तक पहुँचता है। यह सरणी-जैसा संग्रह चयनित विकल्पों की जांच करने के लिए पुनरावृत्ति की अनुमति देता है, जो एकाधिक चयनों को संभालने में महत्वपूर्ण है।
selected किसी विशेष विकल्प का चयन किया गया है या नहीं यह निर्धारित करने के लिए लूप के भीतर उपयोग किया जाता है। यह बहु-चयन ड्रॉपडाउन में गैर-चयनित विकल्पों को फ़िल्टर करने में मदद करता है।
set() कुंजी-मूल्य जोड़ी को अपडेट करने या जोड़ने के लिए फॉर्मडेटा ऑब्जेक्ट पर सेट() विधि को कॉल किया जाता है, जैसे मल्टी-सेलेक्ट ड्रॉपडाउन से सभी चयनित मानों को भेजने से पहले फॉर्म डेटा में जोड़ना।
URLSearchParams() यह एक वेब एपीआई है जो फॉर्म डेटा को क्वेरी स्ट्रिंग में क्रमबद्ध करता है। इसका उपयोग फॉर्मडेटा ऑब्जेक्ट को HTTP अनुरोधों के लिए उपयुक्त स्ट्रिंग प्रारूप में परिवर्तित करने के लिए किया जाता है।
XMLHttpRequest() HTTP अनुरोध भेजने के लिए व्यापक रूप से उपयोग किया जाने वाला एपीआई। इसका उपयोग फ्रंट-एंड से सर्वर पर एसिंक्रोनस डेटा सबमिशन करने के लिए किया जाता है, जिससे पेज रिस्पॉन्सिव बना रहता है।
fetch() HTTP अनुरोधों को अधिक सहजता से और वादा-आधारित सिंटैक्स के साथ बनाने के लिए XMLHttpRequest() का एक आधुनिक विकल्प, Fetch() का उपयोग किया जाता है। यह नेटवर्क अनुरोधों का साफ़ और अधिक संक्षिप्त प्रबंधन प्रदान करता है।
$.ajax() एक jQuery कमांड जो एसिंक्रोनस HTTP अनुरोध करना सरल बनाता है। यह जटिल कॉन्फ़िगरेशन का समर्थन करता है और इसका उपयोग एकाधिक चयनों को संभालने और उन्हें सर्वर पर सबमिट करने के लिए किया जाता है।

यह समझना कि जावास्क्रिप्ट फॉर्म में एकाधिक चयनों को कैसे संभालना है

ऊपर दी गई स्क्रिप्ट का उद्देश्य वेब विकास में एक सामान्य समस्या को हल करना है: जावास्क्रिप्ट का उपयोग करके एक फॉर्म से सर्वर पर कई चयनित विकल्प सबमिट करना। मूल सेटअप में, एक फॉर्म में एकल चयन ड्रॉपडाउन होता था। हालाँकि, जब ए पर स्विच किया गया बहु-चयन ड्रॉपडाउन, केवल अंतिम चयनित विकल्प सबमिट किया गया था। इसे संबोधित करने के लिए, हम HTTP अनुरोध के माध्यम से सर्वर पर भेजने से पहले सभी चयनित विकल्पों को एकत्र करने के लिए जावास्क्रिप्ट कोड को संशोधित करते हैं।

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

दूसरा समाधान दर्शाता है कि उसी समस्या का उपयोग करके कैसे निपटा जाए एपीआई लायें. Fetch XMLHttpRequest की तुलना में एक साफ़ और अधिक वादा-आधारित दृष्टिकोण प्रदान करता है, जिससे अतुल्यकालिक संचालन को संभालना आसान हो जाता है। पहले उदाहरण की तरह, चयनित विकल्पों को एक सरणी में इकट्ठा किया जाता है और एक स्ट्रिंग में परिवर्तित किया जाता है। लाना विधि फिर इस डेटा को PHP बैकएंड पर भेजती है। यह दृष्टिकोण अपने लचीलेपन और अधिक सहज सिंटैक्स के कारण आधुनिक वेब अनुप्रयोगों में अधिक कुशल और व्यापक रूप से अपनाया गया है।

तीसरा समाधान jQuery का उपयोग करता है, जो एक लोकप्रिय जावास्क्रिप्ट लाइब्रेरी है जो कई DOM जोड़तोड़ और Ajax संचालन को सरल बनाती है। यहां, चयनित विकल्पों को का उपयोग करके कैप्चर किया जाता है .वैल() विधि, जो चयनित मानों को सीधे एक सरणी के रूप में लौटाती है। इसके बाद ऐरे को भेजा जाता है $.ajax(), jQuery में HTTP अनुरोध निष्पादित करने का एक सरल तरीका। इस दृष्टिकोण के लिए पिछले उदाहरणों की तुलना में कम मैन्युअल कोड की आवश्यकता होती है, जिससे यह एक त्वरित समाधान बन जाता है जब jQuery पहले से ही आपके प्रोजेक्ट में शामिल हो।

PHP फॉर्म सबमिशन के लिए जावास्क्रिप्ट में एकाधिक चयनों को संभालना

PHP बैकएंड में एकाधिक चयनित मानों वाले फ़ॉर्म को सबमिट करने के लिए XMLHttpRequest के साथ जावास्क्रिप्ट।

function submitForm() {
    var formData = new FormData(document.forms["rform"]);
    var selectedOptions = [];
    var selectElement = document.getElementsByName("inputa[]")[0];
    for (var i = 0; i < selectElement.options.length; i++) {
        if (selectElement.options[i].selected) {
            selectedOptions.push(selectElement.options[i].value);
        }
    }
    formData.set('inputa', selectedOptions.join(','));
    var xhttp = new XMLHttpRequest();
    xhttp.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {
            alert("Submitted");
        }
    };
    xhttp.open("POST", "test2.php", true);
    xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    xhttp.send(new URLSearchParams(formData).toString());
}

बेहतर दक्षता के लिए फ़ेच एपीआई का उपयोग करके एकाधिक चयनों को संभालना

PHP बैकएंड पर कई चयनित विकल्पों वाला एक फॉर्म सबमिट करने के लिए फ़ेच एपीआई के साथ जावास्क्रिप्ट।

function submitForm() {
    var formData = new FormData(document.forms["rform"]);
    var selectedOptions = [];
    var selectElement = document.getElementsByName("inputa[]")[0];
    for (var i = 0; i < selectElement.options.length; i++) {
        if (selectElement.options[i].selected) {
            selectedOptions.push(selectElement.options[i].value);
        }
    }
    formData.set('inputa', selectedOptions.join(','));
    fetch('test2.php', {
        method: 'POST',
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded'
        },
        body: new URLSearchParams(formData).toString()
    })
    .then(response => response.text())
    .then(result => alert("Submitted"))
    .catch(error => console.error('Error:', error));
}

सरलीकृत सिंटैक्स के लिए jQuery के साथ एकाधिक चयनों को संभालना

एकाधिक चयनित विकल्पों को एकत्रित करने और PHP में सबमिट करने के लिए jQuery का उपयोग करना।

$('#submitBtn').on('click', function(e) {
    e.preventDefault();
    var selectedOptions = $('#inputa').val();
    $.ajax({
        type: 'POST',
        url: 'test2.php',
        data: { 'inputa': selectedOptions },
        success: function(response) {
            alert("Submitted");
        },
        error: function() {
            alert("Error occurred");
        }
    });
});

एकाधिक चयनों के लिए जावास्क्रिप्ट के साथ फॉर्म डेटा हैंडलिंग को अनुकूलित करना

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

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

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

प्रपत्रों में एकाधिक चयनों को संभालने के बारे में सामान्य प्रश्न

  1. मैं जावास्क्रिप्ट में एकाधिक चयनित विकल्प कैसे पुनः प्राप्त करूं?
  2. आप इसका उपयोग कर सकते हैं getElementsByName() चयनित तत्व और लूप को उसके माध्यम से प्राप्त करने की विधि options चयनित मानों को पुनः प्राप्त करने के लिए।
  3. जावास्क्रिप्ट के माध्यम से एकाधिक चयन सबमिट करने का सबसे अच्छा तरीका क्या है?
  4. का उपयोग FormData ऑब्जेक्ट, आप फॉर्म इनपुट इकट्ठा कर सकते हैं और मैन्युअल रूप से कई चयनों को उनके माध्यम से पुनरावृत्त करके और डेटा में मान जोड़कर संसाधित कर सकते हैं।
  5. क्या मैं फॉर्म जमा करने के लिए फ़ेच एपीआई का उपयोग कर सकता हूँ?
  6. हां Fetch API क्लीनर सिंटैक्स और बेहतर त्रुटि प्रबंधन के साथ फॉर्म डेटा सहित HTTP अनुरोध भेजने का एक आधुनिक तरीका प्रदान करता है।
  7. Fetch API और XMLHttpRequest के बीच क्या अंतर है?
  8. जबकि दोनों HTTP अनुरोध भेज सकते हैं, Fetch API जबकि, बेहतर एसिंक्रोनस हैंडलिंग के वादों का उपयोग करते हुए अधिक आधुनिक है XMLHttpRequest कॉलबैक का उपयोग करता है.
  9. फ़ॉर्म सबमिट करते समय मैं त्रुटियों से कैसे निपट सकता हूँ?
  10. आप इसमें त्रुटि-प्रबंधन तर्क शामिल कर सकते हैं fetch() या XMLHttpRequest() फॉर्म जमा करने की प्रक्रिया के दौरान आने वाली किसी भी समस्या को पकड़ने और उसका जवाब देने के तरीके।

एकाधिक प्रपत्र चयनों को संभालने के लिए मुख्य उपाय

जावास्क्रिप्ट फॉर्म में एकाधिक चयनित विकल्पों को संभालने के लिए फॉर्म डेटा को संसाधित करने के तरीके को अपनाने की आवश्यकता होती है। चयनित विकल्पों के माध्यम से लूपिंग करके और प्रत्येक मान को कैप्चर करके, आप यह सुनिश्चित कर सकते हैं कि फ़ॉर्म सबमिट करते समय सभी विकल्प शामिल किए गए हैं।

चाहे उपयोग कर रहे हों एपीआई लायें, XMLHttpRequest, या jQuery, प्रत्येक विधि PHP बैकएंड पर कुशल और सुरक्षित फ़ॉर्म सबमिशन की अनुमति देती है। सही दृष्टिकोण चुनना आपकी विशिष्ट परियोजना आवश्यकताओं और आपके पास पहले से मौजूद उपकरणों पर निर्भर करता है।

जावास्क्रिप्ट फॉर्म पर संदर्भ और आगे पढ़ना
  1. जावास्क्रिप्ट फॉर्म में कई चयनित विकल्पों को संभालने की व्याख्या, जैसे तरीकों सहित फॉर्मडेटा और एपीआई लायें. उपलब्ध है: एमडीएन वेब डॉक्स: फॉर्मडेटा
  2. उपयोग करने पर व्यापक मार्गदर्शिका XMLHttpRequest जावास्क्रिप्ट में डेटा को एसिंक्रोनस रूप से भेजने के लिए: एमडीएन वेब डॉक्स: XMLHttpRequest
  3. का उपयोग करने पर विस्तृत ट्यूटोरियल एपीआई लायें नेटवर्क अनुरोधों को संभालने के लिए: एमडीएन वेब डॉक्स: फ़ेच एपीआई
  4. फॉर्म जमा करने के लिए jQuery दस्तावेज़ $.ajax(): jQuery: $.ajax()