2012-10-19 14 views
13

मैं एक रूप में एक चर में से एक जेसन ऑब्जेक्ट बनाने की कोशिश कर रहा हूं।चर के साथ जेसन ऑब्जेक्ट बनाना

var firstName = $('#firstName').val(); 
var lastName = $('#lastName').val(); 
var phone  = $('#phoneNumber').val(); 
var address = $('#address').val(); 

अभी तक मेरे पास नीचे कोड है लेकिन यह मान्य या काम नहीं करेगा। मैं इसके लिए नया हूँ, कृपया मदद करें! यह करने के लिए बदलने var:

var jsonObject = 
       { 
       firstName: firstName, 
       lastName: lastName, 
       phoneNumber:phoneNumber, 
       address:address 
       } 

JSONlint में मैं इस त्रुटि हो रही है:

Parse error on line 1: varjsonObject={
^ Expecting '{', '['

+0

क्या आप वाकई ** बनाने के लिए JSON चाहते ** नहीं बल्कि एक जे एस वस्तु हैं और? इसके अलावा, वस्तु के कौन से हिस्से चर के रूप में माना जाता है? दूसरे भाग से जुड़ा पहला भाग कैसा है? यदि आप वास्तव में 'formObject' को JSON में कनवर्ट करना चाहते हैं, तो आप भाग्य से बाहर हैं, क्योंकि आप jQuery ऑब्जेक्ट्स को JSON में परिवर्तित नहीं कर सकते हैं (और आप 'first'ame' में '$'' खो रहे हैं: ('#firstName') ')। कृपया जो परिणाम आप प्राप्त करना चाहते हैं उसके बारे में विशिष्ट रहें, अभी यह थोड़ा उलझन में है क्योंकि ऐसा लगता है कि आप सही शब्दावली से जूझ रहे हैं। –

+0

आपको एमडीएन जावास्क्रिप्ट गाइड में ऑब्जेक्ट के बारे में और अधिक पढ़ने में मदद मिल सकती है: https://developer.mozilla.org/en-US/docs/JavaScript/Guide/Working_with_Objects। –

+0

परिणाम जो मैं चाहता हूं वह एक जेसन ऑब्जेक्ट है जिसे मैं AJAX का उपयोग करके भेज सकता हूं। – Anthony

उत्तर

16

अगर आप डबल उद्धृत की जरूरत JSON उपयोग JSON.stringify(object)

var $items = $('#firstName, #lastName,#phoneNumber,#address ') 
var obj = {} 
$items.each(function() { 
    obj[this.id] = $(this).val(); 
}) 

var json= JSON.stringify(obj); 

डेमो: http://jsfiddle.net/vANKa/1

8

यह वस्तु शाब्दिक

मुझे यकीन है कि तुम क्या करने के लिए अपने संरचना चाहते हैं नहीं कर रहा हूँ पर कहा जाता है हो, लेकिन आपके ऊपर जो कुछ है, उसके अनुसार, जहां आप वैरिएबल में मान डालते हैं, इसे आजमाएं।

var formObject = {"formObject": [ 
       {"firstName": firstName, "lastName": lastName}, 
       {"phoneNumber": phone}, 
       {"address": address}, 
       ]} 

इस अधिक समझ बनाने के लिए (क्यों आप ऊपर शाब्दिक में एक सरणी है?) लगता है हालांकि:

var formObject = { 
    firstName: firstName 
    ... 
} 
4

आप किसी DOM तत्व को संदर्भित कर रहे हैं जब $('#lastName') की तरह कुछ कर रही। यह id विशेषता "lastName" के साथ एक तत्व है। ऐसा क्यों करते हैं? आप एक स्थानीय चर में संग्रहीत मूल्य का संदर्भ देना चाहते हैं, पूरी तरह से असंबंधित। प्रयास करें इस (formObject को काम संभालने चर घोषणाओं के रूप में ही दायरे में है) -

var formObject = { 
    formObject: [ 
     { 
      firstName:firstName, // no need to quote variable names 
      lastName:lastName 
     }, 
     { 
      phoneNumber:phoneNumber, 
      address:address 
     } 
    ] 
}; 

यह हालांकि बहुत अजीब लगता है: आप एक वस्तु "formObject" है कि एक सदस्य "formObject" कहा जाता है बना रहे हैं वस्तुओं की एक सरणी है।

3

यह देखने के लिए प्रयास करें कि आप स्ट्रिंग से ऑब्जेक्ट कैसे बना सकते हैं।

var firstName = "xx"; 
var lastName = "xy"; 
var phone  = "xz"; 
var adress = "x1"; 
var obj = {"firstName":firstName, "lastName":lastName, "phone":phone, "address":adress}; 
console.log(obj); 
2
var formValues = { 
    firstName: $('#firstName').val(), 
    lastName: $('#lastName').val(), 
    phone: $('#phoneNumber').val(), 
    address: $('#address').val() 
}; 

नोट इस समय में बिंदु वस्तु शाब्दिक, जब नहीं ऑब्जेक्ट के गुणों को एक्सेस किया जाता है व्याख्या की गई थी पर तत्वों के मूल्यों में शामिल होंगे। इसके लिए आपको एक गेटर लिखना होगा।

+0

टिप के लिए धन्यवाद। क्या मैंने अपने अद्यतन कोड में चर का उपयोग किया है? – Anthony

+0

@ एंथनी हां, यह सही है। हालांकि, जेएसलिंट आपको कोई सार्थक जानकारी प्रदान नहीं करेगा क्योंकि आपके पास ** जावास्क्रिप्ट ऑब्जेक्ट ** है, जेएसओएन नहीं। – jbabey

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