2013-04-17 12 views
9

यह है कि क्या मैं अपने php फ़ाइल में है:Convert वस्तु

$session = $m->session; 

$ सत्र अब है:

object(stdClass)[31] 
    public 'id' => string '21112' (length=5) 
    public 'external_id' => string '' (length=0) 
    public 'sessiongroupid' => string '1843' (length=4) 
    public 'eventid' => string '5588' (length=4) 
    public 'order' => string '0' (length=1) 
    public 'name' => string 'Ferdau Conference' (length=17) 
    public 'description' => string 'Ferdau Conference' (length=17) 
    public 'starttime' => string '2013-04-18 18:00:00' (length=19) 
    public 'endtime' => string '2013-04-18 18:04:00' (length=19) 
    public 'speaker' => string '' (length=0) 
    public 'location' => string 'Waregem' (length=7) 
    public 'mapid' => string '0' (length=1) 
    public 'xpos' => string '0.000000' (length=8) 
    public 'ypos' => string '0.000000' (length=8) 
    public 'maptype' => string 'plan' (length=4) 
    public 'imageurl' => string '' (length=0) 
    public 'presentation' => string '' (length=0) 
    public 'organizer' => string '0' (length=1) 
    public 'twitter' => string '' (length=0) 
    public 'allowAddToFavorites' => string '0' (length=1) 
    public 'allowAddToAgenda' => string '0' (length=1) 
    public 'votes' => string '0' (length=1) 
    public 'url' => string 'http://ferdau.be' (length=16) 
    public 'venueid' => string '0' (length=1) 

मैं एक समारोह के लिए सभी जानकारी भेजना चाहते हैं मेरी जावास्क्रिप्ट फ़ाइल में सहेजा गया नाम। इस तरह:

echo '<a onclick="save('.$session.')" style="cursor:pointer;" class="metacell"> 
         <img src="'.buildUri("images/icons/favorite.png").'" width="16" /> 
         <span>Add to favorites</span> 
        </a>'; 

जब मैं इसे आज़माता हूं तो मुझे हमेशा एक त्रुटि मिलती है जो केवल एक स्ट्रिंग भेज सकती है। मैं इस ऑब्जेक्ट को किसी ऐसे चीज़ में कैसे परिवर्तित कर सकता हूं जिसे मैं अपने जावास्क्रिप्ट फ़ंक्शन पर भेज सकता हूं?

मैं कोई परिणाम के साथ इस की कोशिश की है: $data = json_encode($session);

मैं इस मिल जब मैं $data = json_encode((array)$session)

कार्य करें:

<a class="metacell" style="cursor:pointer;" ferdau.be","venueid":"0"})"="" \="" 18:04:00","speaker":"","location":"waregem","mapid":"0","xpos":"0.000000","ypos":"0.000000","maptype":"plan","imageurl":"","presentation":"","organizer":"0","twitter":"","allowaddtofavorites":"0","allowaddtoagenda":"0","votes":"0","url":"http:\="" 18:00:00","endtime":"2013-04-18="" conference","starttime":"2013-04-18="" conference","description":"ferdau="" id":"21112","external_id":"","sessiongroupid":"1843","eventid":"5588","order":"0","name":"ferdau="" onclick="save({"> 
+1

'$ डेटा = json_encode ((सरणी) $ सत्र)' –

+0

संभावित डुप्लिकेट। http://stackoverflow.com/questions/4697656/using-json-encode-on-objects-in-php-regardless-of-scope – karmafunk

+0

PHP> = 5.4.0 में JSON को ऑब्जेक्ट्स को क्रमबद्ध करने के लिए एक नया इंटरफ़ेस है: JsonSerializable – karmafunk

उत्तर

20

$data = json_encode((array)$session); जाने के लिए सही रास्ता है।

मुझे लगता है कि आप जो एचटीएमएल दिखा रहे हैं वह है जो आप फायरबग/क्रोम देव टूल्स/आईई देव टूल्स में देखते हैं। ब्राउजर इसे प्रस्तुत करने का प्रयास करने के बाद ऐसा लगता है। आउटपुट वास्तव में कैसा दिखता है यह देखने के लिए कच्चे स्रोत को देखने का प्रयास करें। इस बिंदु पर आपकी समस्या json_encode से डबल कोट्स के कारण होती है जिससे ब्राउज़र इंजन विशेषता $data से मानों के अंत से पहले बंद हो जाता है।

आपको डबल-कोट्स से बचने और/या HTML में सिंगल-कोट्स का उपयोग करने के कुछ मिश्रण करने की आवश्यकता होगी। मैं सिंगल कोट्स से शुरू करूंगा, क्योंकि यह अधिक आसान होगा। लेकिन आपको यह भी सुनिश्चित करना होगा कि $data में से कोई भी मान अनचाहे एकल उद्धरण शामिल नहीं है (जैसा कि उसी समस्या में परिणाम होगा)।

+0

और फिर मैं अपने जावास्क्रिप्ट कोड में जेसन मान कैसे पढ़ सकता हूं? – nielsv

+1

देखें http://www.json.org/js.html। विशेष रूप से: 'किसी JSON टेक्स्ट को ऑब्जेक्ट में कनवर्ट करने के लिए, आप eval() फ़ंक्शन का उपयोग कर सकते हैं। eval() जावास्क्रिप्ट संकलक का आह्वान करता है। चूंकि JSON जावास्क्रिप्ट का उचित सबसेट है, इसलिए संकलक सही ढंग से पाठ को पार्स करेगा और ऑब्जेक्ट स्ट्रक्चर का उत्पादन करेगा। जावास्क्रिप्ट के वाक्यविन्यास में अस्पष्टता पर ट्राइपिंग से बचने के लिए टेक्स्ट को पैरों में लपेटा जाना चाहिए। var myObject = eval ('(' + myJSONtext + ')'); ' –