2011-07-08 13 views
12

मैं निम्नलिखित कोड है भेजने खाली सरणियों निकाल देता है। जब मैं क्रोम का उपयोग करके क्या भेजा जाता है, तो मुझे लगता है कि "लेआउट" पैरामीटर बैकएंड स्क्रिप्ट को भी नहीं भेजता है।JQuery जब

चूंकि खाली सरणी और सरणी की अनुपस्थिति के बीच कोई अंतर है, इसलिए मैं JQuery को खाली सरणी भेजना चाहता हूं। मुझे कुछ संकेत मिल सकते हैं कि JQuery (1.6.1) ऐसा करने लगता है, लेकिन ऐसा करने से इसे रोकने के लिए नहीं। JSON प्रारूप खाली सरणी और खाली वस्तुओं के लिए अनुमति देता है, इसलिए मुझे लगता है कि यह संभव होना चाहिए।

क्या कोई जानता है कि क्या बदलना है JQuery खाली सरणी भेज सकता है?

+0

खाली पैरामीटर क्यों भेजें? यदि आप ध्वज या टोकन या कुछ सेट करना चाहते हैं, तो बस 'लेआउट: सत्य' करें। – Bojangles

+0

'' [] "' कोशिश करें। चाल – eagor

उत्तर

-4

मुझे यकीन नहीं है कि आपको खाली पैरामीटर भेजने की आवश्यकता क्यों है। केवल PHP स्क्रिप्ट में पैरामीटर के अस्तित्व की जांच करना पर्याप्त होना चाहिए। हालांकि, अगर आप वास्तव में ऐसा करना चाहते हैं, तो 'layout': [] के बजाय 'layout': [""] का उपयोग करें। पैरामीटर भेजा जाना चाहिए।

(इसके अलावा, आप layout[] को layout नाम बदलने के लिए यह एक सरणी है इंगित कर सकते हैं, लेकिन यह अनावश्यक है।)

+0

करना चाहिए कोड में फ़ील्ड वाले कंटेनर की वृक्ष संरचना बनाए रखती है। क्लाइंटसाइड स्क्रिप्ट को बैकएंड के साथ संवाद करने की आवश्यकता है कि कंटेनर खाली हो गए हैं (रिक्त सरणी) या पेड़ से पूरी तरह से हटा दिए गए हैं (कोई प्रविष्टि नहीं)। –

+0

ध्यान दें कि मेरे पास 'आइटम' सूची है जो उपयोगकर्ता जटिल मॉडल में हटा देता है। आम तौर पर मैं केवल बदले गए फ़ील्ड अपडेट करता हूं। अगर मुझे कोई परम नहीं मिलता है, तो फ़ील्ड अपडेट नहीं होगा और आइटम की सूची अपडेट नहीं की जाएगी - लेकिन जब मैं 'आइटम्स = सरणी() 'सही सेट करता हूं तो सभी आइटम हटा दिए जाने चाहिए? या यहां तक ​​कि 'आइटम = शून्य', लेकिन बिना किसी (पोस्ट/प्राप्त) जानकारी मॉडल के बारे में पता नहीं है कि इसे 'आइटम' फ़ील्ड को भी छूना चाहिए! –

+0

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

-1

इस प्रयास करें:

(isset($_POST['layout'])) ? $_POST['layout'] : array(); 

एक नया खाली सरणी यदि पाने के लिए पारित सरणी खाली है, अन्यथा डेटा के साथ "वास्तविक" सरणी।

+2

यह साधारण मामलों के लिए काम करेगा, हालांकि यह अभी भी परेशान है –

+2

मुझे पता है कि यह एक बहुत ही पुराना उत्तर है, लेकिन मुझे इसे कम करने की आवश्यकता है क्योंकि यह सवाल का जवाब नहीं देता है। आप बग के नतीजों को केवल 'फिक्सिंग' कर रहे हैं, बग नहीं। यदि उपयोगकर्ता के पास कोई खाली सरणी नहीं है, तो उपयोगकर्ता खाली सरणी भेजना चाहता है। ए: ए सूची के बीच एक बड़ा अंतर है जो खाली है, बी: कुछ भी नहीं। – thisisboris

0

मैं json तरह के एक मामले में

एनकोड js में सरणी मदद और php

में परिणाम भेज तो यह डिकोड जाएगा लगता है, लेकिन यह कुछ संसाधन ले जाएगा

7

हमारे संगठन दो दृष्टिकोण है समस्या के लिए:

  • पोस्ट-डेटा के विपरीत JSON के रूप में डेटा भेजना एक अच्छा ऑल-ऑब्जेक्ट दृष्टिकोण है, हालांकि कभी-कभी फ्रेम के साथ एकीकृत करना मुश्किल होता है रेल की तरह काम करता है, क्योंकि आपको JSON डेटा को डीकोड करने के लिए स्पष्ट बैक-एंड कॉल जोड़ना पड़ सकता है।
  • [""] जैसा कि विनोद द्वारा उल्लेख किया गया है, अच्छी तरह से काम करेगा, क्योंकि कई ढांचे (जैसे रेल) ​​अक्सर इसे एक खाली सरणी के रूप में मानेंगे। (कारण के लिए, this Stack Overflow answer देखें)।
    • नोट: यह रेल के कुछ पहलुओं के साथ एकीकृत करने की कोशिश करते समय काम करता है, विशेष रूप से जब has_many संबंध से संबंधित वस्तुओं की आईडी भेजना। जैसे यदि आपके पास foos तालिका और तालिका है, और fooshas_many :bars through :foo_bars है, तो foo ऑब्जेक्ट पर सभी संगठनों को निकालने का एक तरीका foo: { bar_ids: [""] } पास करना है।

दोनों दृष्टिकोण वांछित से hackier हैं, और मैं एक क्लीनर दृष्टिकोण की खोज के लिए खुशी होगी।

+1

अच्छा जवाब, लेकिन वास्तव में रेल '['']' को खाली सरणी के रूप में नहीं मानते हैं: '[''] .empty? # => झूठी' '[''] .blank? # => झूठी' –

+0

@AlterLagos सही, सामान्य मामले में, लेकिन जब पोस्ट-डेटा के रूप में प्राप्त किया जाता है, तो रेल एक खाली सरणी के रूप में '[' '] 'का इलाज करने लगते हैं। (उदाहरण के लिए मेरे नोट से उदाहरण में, रेल निर्दिष्ट 'foo' को' bar_id 'पर मैपिंग का संबंध नहीं बनाते हैं: "" - यह सिर्फ सभी foo/bar संबंधों को हटा देता है) –

+1

ओह एनवीएम, मुझे बस आपके नोट के बारे में एहसास हुआ और, वास्तव में, यह केवल आईडी की सूचियों के लिए लागू होना चाहिए। मेरे मामले में यह एक जेसन क्षेत्र था और इसके कारण इसे एक खाली स्ट्रिंग वाले सरणी की तरह डीबी में सहेजा गया था। –

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