2010-04-29 7 views
9

में पहचानकर्ता के रूप में एक चर का उपयोग करना मुझे आश्चर्य है कि एक जेएसन सरणी में पहचानकर्ता के रूप में असाइन किए गए चर का उपयोग करना संभव है या नहीं। जब मैं इस की कोशिश की, मैं कुछ अप्रत्याशित परिणाम हो रही थी:एक जेएसन सरणी

(कोड सरल है, मापदंडों एक अलग तरीके से पारित कर रहे हैं)

 

var parameter = 'animal'; 
var value = 'pony'; 

Util.urlAppendParameters (url, {parameter : value}); 


Util.urlAppendParameters = function(url, parameters) { 
    for (var x in parameters) { 
     alert(x); 
    } 
} 

अब चेतावनी पॉपअप कहते हैं: 'पैरामीटर' 'जानवर' के स्थान पर । मुझे पता है कि मैं एक अलग विधि का उपयोग कर सकता हूं (एक सरणी बनाना और प्रत्येक पैरामीटर को एक नई लाइन पर असाइन करना), लेकिन मैं अपना कोड कॉम्पैक्ट रखना चाहता हूं।

तो मेरा सवाल यह है: क्या जेएसएल सरणी में एक पहचानकर्ता के रूप में एक चर का उपयोग करना संभव है, और यदि ऐसा है, तो क्या आप कृपया मुझे बता सकते हैं कि कैसे?

अग्रिम धन्यवाद!

उत्तर

3

नहीं, आप एक वैरिएबल का उपयोग किसी ऑब्जेक्ट के भीतर एक पहचानकर्ता के रूप में नहीं कर सकते हैं। पार्सर वहां एक नाम की उम्मीद कर रहा है ताकि आप और कुछ नहीं कर सकें लेकिन एक स्ट्रिंग प्रदान कर सकें। पहले से ही

Util.urlAppendParameters (url, eval("({" + parameter + " : value})"); 
+0

यह वही है जो मैं ढूंढ रहा था। ऐसा नहीं है कि मैं इसका उपयोग करने जा रहा हूं (मुझे यकीन है कि वास्तव में वास्तव में यह नहीं चाहते हैं: डी), लेकिन मैं वास्तव में इस बारे में उत्सुक था कि इसे कैसे हल किया जा सकता है। धन्यवाद! –

10

आप दो चरणों में अपना वस्तु का निर्माण, और [] संपत्ति एक्सेसर उपयोग करने के लिए की आवश्यकता होगी:

var parameter = 'animal'; 
var value = 'pony'; 

var obj = {}; 
obj[parameter] = value; 

Util.urlAppendParameters (url, obj); 

मुझे नहीं लगता कि JSON सारणी अधिक सही शब्द है, मैं इसे वस्तु कहेंगे शाब्दिक

+0

हाँ, मैं:

var parameter = 'animal'; var parameter = 'value'; //<- Parser expects a name, nothing more, so original parameter will not be used as name 

चारों ओर केवल काम करता है, तो क्या तुम सच में वास्तव में एक पंक्ति पर शाब्दिक एक वस्तु का उपयोग करना चाहते eval उपयोग करने के लिए है: इसी तरह आप कुछ इस तरह नहीं कर सका ऐसा किया, लेकिन मैं सिर्फ यह जानना चाहता हूं कि यह संभव है कि अन्य प्रोग्रामिंग भाषाओं (उदाहरण के लिए बैकटिक्स से बचें, या सिर्फ एक प्रमुख $ चिह्न के साथ) अस्पष्ट शीर्षक के लिए खेद है, प्रोग्रामिंग शब्दावली मेरी सबसे अच्छी कौशल नहीं है। –

+3

@ सीएमएस हमने लंबे समय तक समाधान के लिए इंटरनेट की खोज की और इसे यहां पाया, thx –

+2

@ माइकलमोवेलर, आपका स्वागत है! – CMS

1

आपकी ज़रूरतों के आधार पर आप एक सहायक कार्य के साथ अपना ऑब्जेक्ट भी बना सकते हैं;

Util.createParameters = function(args) { 
    var O = {}; 
    for (var i = 0; i < arguments.length; i += 2) 
     O[arguments[i]] = arguments[i + 1]; 
    return O 
} 

Util.urlAppendParameters (url, Util.createParameters(parameter, value, "p2", "v2")); 
+0

इसके अलावा एक अच्छा समाधान! –