使用jsonp跨域请求

mac2022-06-30  23

一、异步对象,不能实现跨域请求

在站点A中访问站点B的数据:

站点A代码:

1 window.onload = function () { 2 document.getElementById("btnAjax").onclick = doAjax; 3 } 4 function doAjax() { 5 var xhr = new XMLHttpRequest(); 6 xhr.open("get", "http://www.ruanmou.net/C01Target.ashx", true); 7 xhr.setRequestHeader("If-Modified-Since", "0"); 8 xhr.onreadystatechange = function () { 9 10 if (xhr.readyState == 4 && xhr.status == 200) { 11 var res = xhr.responseText; 12 alert(res); 13 } 14 }; 15 xhr.send(null); 16 } <input type="button" value="使用异步请求跨域请求是错的" id="btnAjax" />

站点B代码:

C01Target.ashx中:

1 public void ProcessRequest(HttpContext context) 2 { 3 context.Response.ContentType = "text/plain"; 4 context.Response.Write(“hello world”); 5 }

二、使用script标签实现跨域请求

站点A代码:

<script type="text/javascript" src="http://www.ruanmou.net/C01Target.ashx?callback=showData"></script> 1 function showData(data) { 2 for (var key in data) { 3 alert(data[key]); 4 } 5 }

站点B代码:

C01Target.ashx中:

1 public void ProcessRequest(HttpContext context) 2 { 3 string funName = context.Request.Params["callback"]; 4 context.Response.ContentType = "text/plain"; 5 string strDate = funName+"({\"name\":\"Xuj\",\"age\":\"18\"})";//返回数据为json格式 6 context.Response.Write(strDate); 7 }

 三、jquery使用jsonp实现跨域请求

站点A代码:

1 window.onload = function () { 2 document.getElementById("btnAjax").onclick = doAjax; 3 } 4 function doJq() { 5 $.ajax("http://www.ruanmou.net/C01Target.ashx"), { 6 type: "get",//内部就是创建一个script标签 7 jsonp:"callback",//传的参数名,和服务器端一致 8 dataType: "jsonp",//指定回调的函数名 9 jsonCallback: "showData", 10 success: function () { 11 alert("11111"); 12 } 13 }); 14 } 1 function showData(data) { 2 for (var key in data) { 3 alert(data[key]); 4 } 5 }

 

转载于:https://www.cnblogs.com/ruanmou001/p/3674965.html

相关资源:jsonp跨域请求实现示例
最新回复(0)