jquery - Why cant null be returned to a $.getJSON() function? -
given following controller method
public actionresult testjsonresult() { return json(true, jsonrequestbehavior.allowget); // return json(null, jsonrequestbehavior.allowget); // return null; }
and client side script
var url = '@url.action("testjsonresult", "test")'; $.getjson(url, function (result) { if (result) { console.log('returned result'); } else { console.log('returned null'); // never hit } }).fail(function (result) { console.log('failed'); // hit return json(null); , return null; // result status 200 ok });
then outputs 3 return value options are
return json(true, jsonrequestbehavior.allowget); // outputs "returned result" return json(null, jsonrequestbehavior.allowget); // outputs "failed" return null; // outputs "failed"
acording specification
values
a json value must object, array, number, or string, or 1 of following 3 literal names: false null true
if json value can null
, why else
block never hit when return value null
, failing of json() method or null
value cannot represented json when returned getjson()
method?
note, using $.ajax()
without specifying datatype:
hit else
block when controller method return null;
(i assume because return value interpreted other json).
note: using mvc-4 , jquery-1.9.1
because return json(null, jsonrequestbehavior.allowget)
return empty string. , empty string not valid json string. $.getjson
failed. can use javascript try json.parse("")
throw error.
Comments
Post a Comment