Преобразование объекта класса stdClass в объект JSON

это то, что у меня есть в моем php-файле:

$session = $m->session; 

$ 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) 

Я хочу отправить всю информацию в функцию с именем save в моем файле javascript. Как это:

 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>'; 

Когда я пытаюсь это сделать, я всегда получаю сообщение об ошибке, которое может отправлять только строка. Как я могу преобразовать этот объект в то, что я могу отправить в функцию javascript?

Я пробовал это без результата: $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({"> 

    $data = json_encode((array)$session); это правильный путь.

    Я предполагаю, что html, который вы показываете, есть то, что вы видите в инструментах firebug / chrome dev / IE dev. Это выглядит так, как только браузер пытается его отобразить. Попробуйте посмотреть исходный источник, чтобы увидеть, как выглядит вывод. Ваша проблема на этом этапе вызвана двойными кавычками из json_encode заставляя механизм браузера учитывать атрибут onclick закрытый до конца значений из $data .

    Вам нужно будет сделать несколько сочетаний двойных кавычек и / или использования одиночных кавычек в HTML. Я бы начал с одиночных кавычек, так как это будет проще. Но вам также нужно убедиться, что ни одно из значений в $data содержит одиночных кавычек (так как это приведет к одной и той же проблеме).