ajax跨域请求实例

来源:互联网 发布:淘宝店铺一心好做吗 编辑:程序博客网 时间:2024/05/17 06:23

客户端JS:

复制代码
 1 var xhrurl = 'http://localhost:8001/Ajax/ticketNotify.ashx?cu=kefu1'; 2 $.ajax({ 3         type : "get", 4         async : false, 5         url :xhrurl,  6         cache : false, 7         dataType : "jsonp", 8         jsonp: "callbackparam", 9         jsonpCallback:"jsonpCallback1",10         success : function(json){11             alert(json[0].name);12         },13         error:function(e){14             alert("error");15         }16     });
复制代码

服务端代码:

1             String callbackFunName = context.Request["callbackparam"];2             context.Response.Write(callbackFunName + "([ { \"name\":\"John\"}])");

PS:客户端的jsonp参数是用来通过url传参,传递jsonpCallback参数的参数名,比较拗口,通俗点讲:

jsonp: "callbackparam"jsonpCallback:"jsonpCallback1"这两个参数最终会拼接在请求的url后面,变成 http://www.xxx.com/ajax/xxx.ashx?callbackparam=jsonCallback1服务端要获取这个参数值:"jsonCallback1"  ,拼接在要输出的JSON数据最前面,不然就算请求成功你也只会看到警告:Resource interpreted as Script but transferred with MIME type text/plain:却看不到success定义的函数执行。

顺带一提:在chrome浏览器里,还可以在服务端设置header信息context.Response.AddHeader("Access-Control-Allow-Origin", "*");来达到跨域请求的目的,并且不需要设置ajax以下参数
dataType : "jsonp",jsonp: "callbackparam",jsonpCallback:"jsonpCallback1"

以正常ajax请求方式就可以获得数据。

0 0
原创粉丝点击