一、什么是Jsonp
jsonp(json with padding) 是一种“使用模式”,可以让网页从别的域名那获取资料,即跨域读取数据。
为什么会使用jsonp呢?因为同源策略(数据来源一致),现在所有支持javascript 的浏览器都会使用这个策略。
Ajax请求资源受同域的限制,不管是静态资源,动态资源,web服务都不行。
web页面上调用的js文件不受跨域的影响,即(a.cubejoy.com域名下的a.html可以调用b.cubejoy.com域名下的b.js 但是b.js里ajax请求的数据获取不到)
c#具体用法:
ReturnGrade: function () {
 $.ajax({
 url: "//my.cubejoy.com/Handler/MyData.ashx",
 type: "get",
 dataType: "jsonp",
 jsonp: "jsonpCallBack",
 data: { "type": "UserGrade" },
 success: function (data) {
 try {
 if (data.State) {
 if (data.Data) {
 $(".userinfoGradeName").text(data.Data.split('|')[1]);
 $(".userinfoGrade").text(data.Data.split('|')[0]);
 }
 }
 else {
 Common.MyMsg.ErrorMsg(data.Msg);
 }
 } catch (e) {
 Common.MyMsg.ErrorMsg(e.message);
 }
 }
 });
 },
后台cs
 private string ReturnUserGrade(HttpContext context)
 {
 result = new Utils.HandlerResult();
 string jsonpCallBack = context.Request["jsonpCallBack"];
 try
 {
 string userid = IsLogin().uid.ToString();
 result.State = Utils.HandlerState.Yes;
 result.Data = Common.AppCode.GetUserGrade(userid);
 }
 catch (Exception ex)
 {
 result.State = Utils.HandlerState.No;
 result.Msg = ex.Message;
 GetErrorLog(ex, "ReturnUserGrade");
 }
 return jsonpCallBack + "(" + CommonDLL.Utils.ObjectToJsonStr(result) + ")";
 }