2010-11-23 8 views
10

के माध्यम से वस्तु पारित और इस ऑब्जेक्ट को पोस्ट अनुरोध के हिस्से के रूप में पास करें।जावास्क्रिप्ट मैं एक वस्तु है कि इस</p> <p>वर की तरह लग रहा obj = {: सच है, p2: सच है, p3 झूठी p1} है पद

लेकिन दूसरे छोर पर (php में) सब मैं मिलता है

[वस्तु वस्तु]

मैं कैसे पोस्ट के माध्यम से एक वस्तु भेज सकते हैं?

मूल रूप से मैं क्या करने की कोशिश कर रहा हूँ

मैं एक इनपुट कि छिपा हुआ है और इतने

<input id="obj" type="hidden" name="obj[]">

जो एक गुप्त फ़ॉर्म का हिस्सा है की तरह बनाई गई है है।

जब एक बटन दबाया जाता है मैं

$(#obj).val(obj); 
$('form').submit(); 


कृपया कोई सुझाव नहीं ajax का उपयोग करने के रूप में मैं के रूप में यह एक गतिशील बनाई गई फ़ाइल डाउनलोड करने के लिए है यह इस तरह से करना चाहिए है।

उत्तर

22

आप क्रमानुसार करने की जरूरत है/एक स्ट्रिंग के लिए वस्तु कन्वर्ट इसे जमा करने से पहले। इसके लिए आप jQuery.param() का उपयोग कर सकते हैं।

$('#obj').val(jQuery.param(obj)); 
+1

ए + पहला प्रश्न पढ़ने के लिए पहला, और आपका उत्तर भी सही काम करता है :) स्वीकार करेगा Asap – Hailwood

+1

+1, और यहां एक डेमो है: http://jsfiddle.net/TQEzE/ – karim79

+0

भी पुनरावर्ती रूप से काम करता है '{a: {b:' c ', d: {e:' f ', g:' h '} , i: 'j'} '=>' a [b] = c & a [d] [e] = f & a [d] [g] = h & i = j' – user3338098

11

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

कि इस प्रकार दिखाई देगा:

$('#obj').val(JSON.stringify(obj)); 
$('form').submit(); 

... और अपने सर्वर साइड रूप में एक स्ट्रिंग देखना होगा

{ "p1" : true, "p2" : true, "p3" : false } 
+0

कृपया पूरा प्रश्न पढ़ें। फ़ॉर्म की आवश्यकता है क्योंकि यह गतिशील रूप से जेनरेट की गई फ़ाइल डाउनलोड कर रहा है, आप AJAX डेटा से फ़ाइल डाउनलोड नहीं कर सकते हैं। मैं कहीं भी बनाई गई फ़ाइल को संग्रहीत नहीं कर सकता, इसलिए AJAX कॉल के माध्यम से फ़ाइल उत्पन्न करना और यूआरएल लौटने से कोई काम नहीं करेगा। – Hailwood

+0

@ हैलवुड: विश्वास नहीं कर सकता कि मुझे याद आया। फिक्स्ड। –

+0

@ टीजे। चीयर्स, आपका नया जवाब काम करेगा। हालांकि मैं @ मैट के उत्तर का उपयोग कर रहा हूं :) (पीएस, आप मुझसे एक उपरांत प्राप्त करते हैं) – Hailwood

संबंधित मुद्दे