Q:

Unable to return/process JSON in JQuery $.get()

I have a problem returning/processing JSON data while calling $.get() function. Here's the code:
JQuery:
$.get("script.php?",
        function(data) {
            if (data.status) {
                alert('ok');
            } else {
                alert(data.error);
            }               
    },'json');

PHP
if ($r) {
    $ret = array("status"=>true);
} else {
    $ret = array("status"=>false,"error"=>$error);
}
echo json_encode( $ret );

So this is the code. But the response is always taken as string in the jquery. data.status and data.error is undefined.

A:

Your PHP script needs to set the Content-type header of the response to application/json, e.g.:
header('Content-type: application/json');

Alternately, you can tell jQuery that's going to get JSON back by using the dataType option. Or just use getJSON, which does exactly that. :-)
Edit Sorry, just noticed: You are passing the dataType parameter to get. My suggestion is to look carefully at the response text: Is it really valid JSON? (This site can help there.) From your quoted PHP it seems like it should be, but if there were any other output before or after...

A:

You need to use jQuery 1.4.x, otherwise you have to parse the returned data by yourself.
data = JSON.parse(data);

