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
-~----------~----~----~----~------~----~------~--~---