Yes, my framework, specifically my view that generates JSON sticks the
X-JSON header in to accommodate prototype.  I guess to rephrase my question,
if I turn on the X-JSON header, is it supposed to automatically eval the
response body?  Sorry if I seem like I have a thick skull :)  Thanks a
bunch...
-stephan

On 5/21/07, David Dashifen Kees <[EMAIL PROTECTED]> wrote:
>
>
> Yes.  If your JSON is in the response body, you will have to evaluate it
> yourself.  It must be the framework you're using which is creating the
> X-JSON header, perhaps?  For example:
>
> new Ajax.Request("some_page.php", {
>     parameters: {id: 6},
>     onComplete: function(xhr) {
>        var json = xhr.responseText.evalJSON(true);
>        /* ... do something else ... */
>     }
> });
>
> You're responseText should then be valid JSON.  For more information,
> see http://prototypejs.org/api/string/evaljson.
>
> - Dash -
>
> Stephan Ellis wrote:
> > Dash,
> >   Thanks for the reply.  Are you saying that I have to evaluate the
> > reponseText myself if the JSON is in the response body?  I configured my
> > application to not send the X-JSON header, but prototype is still not
> > evaluating the response body.
> >
> > Thanks,
> > -stephan
> >
> > On 5/21/07, David Dashifen Kees <[EMAIL PROTECTED]> wrote:
> >
> >> The problem is how you're sending information in the X-JSON header.
> >> Prototype will try to automatically evaluate anything in the X-JSON
> >> header assuming that it is a JSON string.  You're X-JSON header is not
> a
> >> JSON string but rather another call to eval() so the internal Prototype
> >> String.evalJSON() function is probably your failure point.
> >>
> >> Instead, either make "var json = transport.responseText.evalJSON(true)"
> >> the first line of your callback function, or make sure that your X-JSON
> >> header is *only* a JSON string.
> >>
> >> Also, you should be aware that Prototype 1.5.1 added security features
> >> to help avoid the execution of JSON with invalid code or malicious code
> >> within it.  As a result, JSON created and passed around by prototype
> has
> >> /*-secure- before your JSON and */ after it.  If you use the
> >> String.evalJSON() function to parse your information, you might need to
> >> explicitly add these strings before and after your JSON to evaluate it
> >> properly.
> >>
> >> - Dash -
> >>
> >> smellis wrote:
> >>
> >>> Hello Everyone,
> >>>
> >>>   I upgraded to 1.5.1 today and I have run into a problem: automatic
> >>> JSON evaluation has stopped working.  On the server side I use
> >>> Catalyst, an MVC framework for perl.  I use Catalyst::View::JSON to
> >>> turn my perl data structures in to JSON.  Here is what my response
> >>> headers look like:
> >>>
> >>> Response Headers
> >>> Connection    close
> >>> Date  Mon, 21 May 2007 15:12:54 GMT
> >>> Content-Length        984
> >>> Content-Type  application/javascript; charset=utf-8
> >>> Set-Cookie    bg2_session=5279b9253f970f84dd032ec4a00ba2a34dcff66c;
> >>> path=/; expires=Mon, 21-May-2007 17:12:54 GMT
> >>> Status        200
> >>> X-Catalyst    5.7007
> >>> X-JSON        eval("("+this.transport.responseText+")")
> >>>
> >>> The JSON is actually in the response body.  I had to subclassed my
> >>> JSON view to spit out application/javascript, because the default
> >>> content-type (application/json) is not listed in the prototype
> >>> documentation as one that will cause prototype to auto evaluate the
> >>> reponse.  I have tried turning off the X-JSON header to see if that
> >>> was a problem, but it still doesn't work.  Any ideas?  Thanks in
> >>> advance. -stephan
> >>>
> >>>
> >>>
> >>>
> >
> > >
> >
> >
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Spinoffs" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-spinoffs?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to