[jQuery] AJAX w/dataType='json', doesn't correctly handle boolean response?

2009-11-19 Thread livefree75
Hi,

I'm using the following code on the client side:
   $.ajax({
  dataType : 'json',
  // other options
  success : function(json_response)  {
 console.log(typeof response, response);   // Using Firefox's
firebug
  }
   });

And this PHP code on the server side:

?php
   // php processing code
   $response = some_boolean_value();
   print json_encode($response);
?

Now, using Firebug, I can verify that the actual JSON response coming
back is indeed either   true   or   false   (without the quotes),
which should evaluate to Javascript boolean true or false.  However,
when I obtain it in the success() method of my $.ajax() call, it comes
in as a string.  (e.g.  true  or  false).  i.e., the console.log()
call renders:   string true

Shouldn't it render:   boolean true  ?

Is this a bug?
Jamie


Re: [jQuery] AJAX w/dataType='json', doesn't correctly handle boolean response?

2009-11-19 Thread Michael Geary
You would normally expect that to work.

What content-type is your server putting in the header for the JSON data?
That could be throwing it off.

Also note that a bare primitive value (true, false, null, or a string or
number) is not valid JSON. The only valid JSON is either an object enclosed
in {} or an array enclosed in []. However, this is not what's causing your
problem. jQuery doesn't use a strict JSON parser - it simply evals the JSON
text - so a bare primitive value should work fine if everything else is OK.

-Mike

On Thu, Nov 19, 2009 at 11:08 AM, livefree75 jpittm...@gmail.com wrote:

 Hi,

 I'm using the following code on the client side:
   $.ajax({
  dataType : 'json',
  // other options
  success : function(json_response)  {
 console.log(typeof response, response);   // Using Firefox's
 firebug
  }
   });

 And this PHP code on the server side:

 ?php
   // php processing code
   $response = some_boolean_value();
   print json_encode($response);
 ?

 Now, using Firebug, I can verify that the actual JSON response coming
 back is indeed either   true   or   false   (without the quotes),
 which should evaluate to Javascript boolean true or false.  However,
 when I obtain it in the success() method of my $.ajax() call, it comes
 in as a string.  (e.g.  true  or  false).  i.e., the console.log()
 call renders:   string true

 Shouldn't it render:   boolean true  ?

 Is this a bug?
 Jamie