2010-09-02 18 views
6

मेरे पास एक ऐसा फॉर्म है जो गतिशील रूप से AJAX का उपयोग करके बनाया गया है (जैसा कि फ़ॉर्म तत्वों के लिए डेटा डेटाबेस से आना है) और मैं फ़ॉर्म के तत्वों को सबमिट करने के लिए क्रमबद्ध करना चाहता हूं ajax। मैं वर्तमान में बस अपना सिद्धांत jQuery वेबसाइट से कोड का उपयोग कर परीक्षण कर रहा हूँ बस अगर मैं प्रपत्र तत्व उठा सकते हैं देखने के लिए और यह वह जगह है जहाँ समस्या निहित है:jQuery serializeArray गतिशील रूप से बनाए गए फॉर्म तत्वों को नहीं उठा रहा

$(document).ready(function() { 
    $('#btnCustomSearch').live('click', function() { 
      $('#results').html(''); 
      alert($('#customSearchTable :input').serializeArray()); 
      // get all the inputs into an array. 
      var fields = $('#customSearchTable :input').serializeArray(); 
      jQuery.each(fields, function(i, field) { 
       $("#results").append(field.name + " = " + field.value + ", "); 
      }); 

      // now we'll reformat the data as we need 

      // here we'll send the data via ajax 

    }); 
}); 

मैं डेटा के लिए कुछ परिवर्तन करने की आवश्यकता से पहले जमा करने के लिए और यह कोड अभी तक लिखा नहीं गया है, लेकिन मुझे जो मिल रहा है वह यह है कि पृष्ठ लोडिंग के समय मौजूद पृष्ठ पर मौजूद किसी भी इनपुट तत्व को सही तरीके से उठाया जाता है, जावास्क्रिप्ट का उपयोग करके पॉप्युलेट किए गए किसी भी तत्व को सही तरीके से उठाया जाता है, लेकिन कोई भी AJAX का उपयोग करके बनाया गया अनदेखा कर रहे हैं।

मुझे पता है कि यह सामान्य रूप से "लाइव" का उपयोग करके हल किया जाता है, लेकिन मुझे अस्पष्ट है कि इसे serializeArray() के साथ कैसे हल किया जाए। अजाक्स अतिरिक्त फॉर्म तत्वों का उपयोग #customSearchTable में जोड़ा गया है और इन्हें उठाया नहीं जा रहा है।

किसी भी मदद की बहुत सराहना की।

धन्यवाद

+1

यह विधि परवाह नहीं है जब तत्व जोड़े गए थे, ऐसा लगता है कि उन्हें फॉर्म तत्वों के रूप में सही ढंग से जोड़ा नहीं जा रहा है, क्या आप उस कोड को पोस्ट कर सकते हैं? उदाहरण के लिए, क्या उनके पास 'नाम' विशेषता है? –

+0

निक, बहुत बहुत धन्यवाद, आप सही हैं, गतिशील रूप से जेनरेट किए गए फॉर्म तत्वों में नाम विशेषता गायब थी .... DOH !!! बहुत बहुत धन्यवाद!! – Cydaps

उत्तर

7

मैं थोड़ा अधिक यहाँ टिप्पणी पर व्याख्या करेंगे:

जब आप .serializeArray() फोन के माध्यम से यह पाशन है सिर्फ एक <form> प्रस्तुत करने के रूप में होगा या अधिक से अधिक निकट वैसे भी, तत्वों प्रस्तुत किया जाना पाने के लिए। महत्वपूर्ण हिस्सा is here:

.filter(function() { 
    return this.name && !this.disabled && 
     (this.checked || rselectTextarea.test(this.nodeName) || 
     rinput.test(this.type)); 
}) 

बस एक <form> के रूप में प्रस्तुत एक name attribute बिना तत्वों शामिल नहीं होगा, this.name का उपयोग कर लोगों से बाहर उन तत्वों फिल्टर करेगा .filter() कॉल श्रृंखलाबद्ध किया जाना है।

+0

धन्यवाद निक, उम्मीद है कि यह किसी भी अन्य मुद्दे के लिए इसे स्पष्ट करता है। – Cydaps

+0

को '