जावास्क्रिप्ट के बिना HTML फॉर्म से एक सरणी पोस्ट करें


90

मेरे पास एक फॉर्म है जो थोड़ा जटिल है और मैं मूल रूप से ट्यूपल्स की एक सरणी को पोस्ट करके सर्वर-साइड (PHP) प्रसंस्करण को सरल बनाने की उम्मीद कर रहा हूं।

प्रपत्र का पहला भाग एक उपयोगकर्ता का प्रतिनिधित्व करता है :

  • पहला नाम
  • उपनाम
  • ईमेल
  • पता
  • आदि

प्रपत्र का दूसरा भाग ट्री का प्रतिनिधित्व करता है :

  • फल
  • ऊंचाई
  • आदि

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


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

जवाबों:


153

इस एक की जाँच करें।

<input type="text" name="firstname">
<input type="text" name="lastname">
<input type="text" name="email">
<input type="text" name="address">

<input type="text" name="tree[tree1][fruit]">
<input type="text" name="tree[tree1][height]">

<input type="text" name="tree[tree2][fruit]">
<input type="text" name="tree[tree2][height]">

<input type="text" name="tree[tree3][fruit]">
<input type="text" name="tree[tree3][height]">

इसे $ _POST [] सरणी (आसान दृश्य के लिए PHP प्रारूप) में इस तरह समाप्त होना चाहिए

$_POST[] = array(
    'firstname'=>'value',
    'lastname'=>'value',
    'email'=>'value',
    'address'=>'value',
    'tree' => array(
        'tree1'=>array(
            'fruit'=>'value',
            'height'=>'value'
        ),
        'tree2'=>array(
            'fruit'=>'value',
            'height'=>'value'
        ),
        'tree3'=>array(
            'fruit'=>'value',
            'height'=>'value'
        )
    )
)

6
एरे इंडेक्सिंग में कौन से चार्ट की अनुमति है? क्या हम उपयोग कर सकते हैं ?: `@ उदाहरण: tree[tree 1][fr ui_t] tree[tree.1][fru:it] tree[tree@1][fru,it] क्या _ केवल नामकरण में सुरक्षित सीमांकक है?
सीओआर

4
हैं tree[][fruit]और tree[][height]सरणी स्वचालित रूप से सूचकांक के लिए मान्य नहीं हो सकता है?
वॉबल्स

मैं इस सबमिट किए गए डेटा को कॉल कॉल में उपयोग करने के लिए js में एरे / ऑब्जेक्ट के रूप में कैसे प्राप्त करूं ... मैंने कोशिश की है new formData($("form")[0])और jQuery $("form").serializeArray()दोनों name="tree[tree1][fruit]"स्ट्रिंग के रूप में लौट रहा है .... मदद
santosh

नोट: यह फॉर्म डेटा एकत्र करने के लिए jquery फ़ंक्शन के साथ .serialize()या.serializeArray()
SubjectDelta

64

आप एक ही नाम के साथ कई इनपुट भी पोस्ट कर सकते हैं और उन्हें खाली वर्ग ब्रैकेट में इनपुट नाम से जोड़कर किसी सरणी में सहेज सकते हैं:

<input type="text" name="comment[]" value="comment1"/>
<input type="text" name="comment[]" value="comment2"/>
<input type="text" name="comment[]" value="comment3"/>
<input type="text" name="comment[]" value="comment4"/>

यदि आप php का उपयोग करते हैं:

print_r($_POST['comment']) 

आपको यह मिलेगा:

Array ( [0] => 'comment1' [1] => 'comment2' [2] => 'comment3' [3] => 'comment4' )
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.