jquery - JSONP request successful, but returns no data -


i'm having trouble retrieving jsonp data 1 of sites. on site data being provided following mvc2 controller action:

public jsonresult jsonlist(string key) {     var consultants = rep.findall().where(c => c.isactive).select(c => new consultantjsonitem { firstname = c.firstname, surname = c.surname });      return json(consultants, "application/json"); } 

on site b, i'm using jquery retrieve json, this:

$.ajax({     url: 'http://www.sitea.com/controller/jsonaction/',     datatype: 'jsonp',     crossdomain: true,     success: function (json) {         alert("success"); // displays         alert(json); // empty     },     error: function (xhr, status, error) {         alert(status); // not called     } }); 

i can see in firebug console response completed correctly 200 code, , can see content length of response 11516 bytes, yet response tab empty , jquery not give me data work with.

can tell me why is?

note: site using jquery 1.4.2

you returning json not same jsonp:

return json(consultants, "application/json"); 

the fact set datatype: 'jsonp' on client half of work need do. second half on server.

checkout following answer illustrates how create custom jsonpresult use callback query string parameter wrap response jsonp.

so:

public class jsonpresult : actionresult {     private readonly object _obj;      public jsonpresult(object obj)     {         _obj = obj;     }      public override void executeresult(controllercontext context)     {         var serializer = new javascriptserializer();         var callbackname = context.httpcontext.request["callback"];         var jsonp = string.format("{0}({1})", callbackname, serializer.serialize(_obj));         var response = context.httpcontext.response;         response.contenttype = "application/json";         response.write(jsonp);     } } 

and then:

public actionresult jsonlist(string key)  {     var consultants = rep.findall().where(c => c.isactive).select(c => new consultantjsonitem { firstname = c.firstname, surname = c.surname });     return new jsonpresult(consultants); } 

and on client:

$.ajax({     url: 'http://www.sitea.com/controller/jsonaction/',     jsonp: 'callback',     datatype: 'jsonp',     success: function (json) {         alert(json);     } }); 

Comments

Popular posts from this blog

jasper reports - Fixed header in Excel using JasperReports -

media player - Android: mediaplayer went away with unhandled events -

python - ('The SQL contains 0 parameter markers, but 50 parameters were supplied', 'HY000') or TypeError: 'tuple' object is not callable -