Matt - Appreciate the help. When I tried to run the getRawPost function on
the request object I am told that Zend_Controller_Request_Http doesn't have
a getRawPost function. I looked at the Http.php file under
Zend/Controller/Request and I found that the only getRaw function it has is
getRawBody.

It doesn't look like this function getRawPost is supported. Is that correct?
I tried getRawBody instead and that gave me the posted JSON data.

Thanks,
-S


Matthew Weier O'Phinney-3 wrote:
> 
> -- sktib <[email protected]> wrote
> (on Wednesday, 11 February 2009, 02:06 PM -0800):
>> Thanks Matt - that solved the problem. Wish I had known earlier as I
>> spent
>> quite some time trying to figure it out.
>> 
>> On the reverse side I am doing a dojo.rawXhrPost from the client side and
>> sending data to server in JSON format as postData : "{foo : 'bar'}"
>> 
>> How do you access that in the Zend Framework? The $_POST[] array doesn't
>> seem to have the posted data.
> 
> If you're using the MVC, you can pull raw post data from the request:
> 
>     $json = $request->getRawPost();
> 
> (You can get the request object in your controller using
> $this->getRequest().)
> 
> If not using the MVC, you need to grab the raw post from php://input:
> 
>     $json = file_get_contents('php://input');
> 
> From there, you'll have to deserialize the JSON to PHP:
> 
>     $native = Zend_Json::decode($json);
> 
>> Matthew Weier O'Phinney-3 wrote:
>> > 
>> > -- sktib <[email protected]> wrote
>> > (on Friday, 06 February 2009, 05:27 PM -0800):
>> >> 
>> >> I played around with the Json a little and realized that if I change
>> the
>> >> Json
>> >> to 
>> >> 
>> >> { identifier: 'id', 
>> >> items:[{"id":"1","name":"XBox"},{"id":"2","name":"XBox
>> >> 360"},{"id":"3","name":"Sony PSP"},{"id":"4","name":"Playstation
>> >> 3"},{"id":"5","name":"Playstation 2"},{"id":"6","name":"PC
>> >> Games"},{"id":"7","name":"Nintendo
>> >> Wii"},{"id":"8","name":"GameCube"},{"id":"9","name":"Nintendo
>> >> DS"},{"id":"10","name":"Nintendo GBA"}]}
>> >> 
>> >> NOTE - I added the "{ identifier: 'id', items: .... }", saved that to
>> a
>> >> file
>> >> and read from that into my datastore for ComboBox, it works fine.
>> >> 
>> >> So how do I make Zend_Json to spit out Json with "{ identifier: 'id',
>> >> items:
>> >> .... }" added?
>> > 
>> > Use Zend_Dojo_Data, which was built precisely for this purpose. :)
>> > 
>> > Simply do the following:
>> > 
>> >     $data = new Zend_Dojo_Data('id', $object->fetchAll(), 'name');
>> >     echo $data;
>> > 
>> > I'm assuming that the "fetchAll()" you referenced in the earlier post
>> > was a call to a database adapter or a Zend_Db_Table object; either way,
>> > Zend_Dojo_Data is smart enough to figure it out.
>> > 
>> > As some background, the ComboBox and FilteringSelect widgets expect a
>> > dojo.data payload in order to build the options for autocompletion.
>> > dojo.data is an abstracted JSON data format used in Dojo for a variety
>> > of widgets. Zend_Dojo_Data was created to create such structures.
>> > 
>> > 
>> > 
>> >> ---------------------------------------------
>> >> 
>> >> sktib wrote:
>> >> > 
>> >> > Hello Folks,
>> >> > 
>> >> > I am working on XP with Zend 1.7.1.
>> >> > 
>> >> > I am trying to get data from Database into a Dojo Combobox on my
>> form -
>> >> > transfering the data using JSON.
>> >> > 
>> >> > I have the following Javascript on my phtml
>> >> > 
>> >> > <script type="text/javascript">
>> >> >   dojo.addOnLoad(function(){
>> >> >     var pfStore = new dojo.data.ItemFileReadStore({url:
>> >> "/test/games"});
>> >> >     var cb1 = new dijit.form.ComboBox({id: "platforms", name: "pf2",
>> >> > value: "Xbox", store: pfStore, searchAttr: "name"}, "platforms");
>> >> >   });
>> >> > </script>
>> >> > 
>> >> > and the following html snippet
>> >> > <td><input id="platforms"></td>
>> >> > 
>> >> > When I click on the downarrow on the combobox, I see in FireBug the
>> >> query
>> >> > going out to /test/games but then it gives the following error
>> >> > 
>> >> > "dijit.form.ComboBox: TypeError: this._arrayOfTopLevelItems is
>> >> undefined"
>> >> > 
>> >> > I look at the response in Firebug and I get the following JSON
>> string.
>> >> > 
>> >> > [{"id":"1","name":"XBox"},{"id":"2","name":"XBox
>> >> > 360"},{"id":"3","name":"Sony PSP"},{"id":"4","name"
>> >> > 
>> >> > :"Playstation 3"},{"id":"5","name":"Playstation
>> >> 2"},{"id":"6","name":"PC
>> >> > Games"},{"id":"7","name":"Nintendo
>> >> > 
>> >> >  Wii"},{"id":"8","name":"GameCube"},{"id":"9","name":"Nintendo
>> >> > DS"},{"id":"10","name":"Nintendo GBA"
>> >> > 
>> >> > }]
>> >> > 
>> >> > To get this JSON, on the server side I do a fetchAll()->toArray()
>> and
>> >> then
>> >> > apply Zend_Json::encode
>> >> > 
>> >> > I don't understand what causes the error and why the "names" in
>> >> response
>> >> > data don't show up in my ComboBox. Sounds like I am overlooking
>> >> something
>> >> > simple/basic here.
>> >> > 
>> >> > Appreciate any help/pointers.
>> >> > 
>> >> > -S
>> >> > 
>> >> 
>> >> ---------------------------------------------
>> >> 
>> >> -- 
>> >> View this message in context:
>> >>
>> http://www.nabble.com/Getting-JSON-data-in-ComboBox-gives-error-tp21882849p21884022.html
>> >> Sent from the Zend Framework mailing list archive at Nabble.com.
>> >> 
>> > 
>> > -- 
>> > Matthew Weier O'Phinney
>> > Software Architect       | [email protected]
>> > Zend Framework           | http://framework.zend.com/
>> > 
>> > 
>> 
>> -- 
>> View this message in context:
>> http://www.nabble.com/Getting-JSON-data-in-ComboBox-gives-error-tp21882849p21965322.html
>> Sent from the Zend Framework mailing list archive at Nabble.com.
>> 
> 
> -- 
> Matthew Weier O'Phinney
> Software Architect       | [email protected]
> Zend Framework           | http://framework.zend.com/
> 
> 

-- 
View this message in context: 
http://www.nabble.com/Getting-JSON-data-in-ComboBox-gives-error-tp21882849p21989452.html
Sent from the Zend Framework mailing list archive at Nabble.com.

Reply via email to