如何解决跨域无法正常请求问题
2016-09-07 23:17
507 查看
参考:http://blog.csdn.net/joyhen/article/details/21631833
方法1: 该方法不同于ajax,因为script标签不受同源策略的限制。
前端和后台需要约定一个接收参数, 然后返回一段js代码。
后端php代码:
后台输出一段js代码,其中包含了一个 _callback123 的方法,参数是一个object。
前端代码:
方法1: 该方法不同于ajax,因为script标签不受同源策略的限制。
前端和后台需要约定一个接收参数, 然后返回一段js代码。
后端php代码:
<?php $callback = $_GET['callback']; $json = '{"ret":1,"start":-1,"end":-1,"country":"\u4e2d\u56fd","province":"\u6c5f\u82cf","city":"\u82cf\u5dde","district":"","isp":"","type":"","desc":""}'; header('content-type: text/javascript'); echo $callback . '(' , $json, ');'; // url: https://animals-facial.c9users.io/json.php?_callback=_callback123 //输出:_callback123({"ret":1,"start":-1,"end":-1,"country":"\u4e2d\u56fd","province":"\u6c5f\u82cf","city":"\u82cf\u5dde","district":"","isp":"","type":"","desc":""}); //输出了一段js代码
后台输出一段js代码,其中包含了一个 _callback123 的方法,参数是一个object。
前端代码:
<script> //动态创建一个script function loadScript(url, data, fun) { var head = document.head || document.getElementsByName("head")[0], scriptElement = document.createElement("script"), //把传入的值设置成随机的。 funName = '_callback' + Math.round(Math.random() * 1000); //使用约定的callback为参数, fullName是传入callback参数的值 url = url + '?callback=' + funName; //把参数接到URL后面 for (var i in data) { url += '&' + i + '=' + data[i]; } scriptElement.src = url; //取到js方法后,执行该js方法。 这里要用全局的方法,所以用window[] window[funName] = function (json) { fun(json); //执行完成后删除该script和该方法 head.removeChild(scriptElement); window[funName] = null; }; scriptElement.onload = function () { scriptElement.onload = scriptElement.onreadystatechange = null; } head.appendChild(scriptElement) } //传入url, 数据, 回调函数 loadScript("https://animals-facial.c9users.io/json.php", { name: 'china' }, function (json) { //todo something console.log(json); 输出得到的json }); </script>
相关文章推荐
- 解决ajax、js无法跨域向服务器请求数据的问题
- 如何解决JavaScript中UUID作为方法参数在方法中无法传递而数字却正常传递的问题
- 如何解决ViewPager在ScrollView中滑动经常失效、无法正常滑动问题。
- 解决Vue跨域跨域请求无法获得结果的问题
- 如何解决 XMLHttpRequest 跨域请求的问题
- 如何解决JavaScript中UUID作为方法参数在方法中无法传递而数字却正常传递的问题
- ajax请求json类型无法跨域传递cookie的问题解决
- React如何解决fetch跨域请求时session失效问题
- 如何解决跨域请求的问题
- 请求帮助:如何解决烦人的VS.NET2003编译时“无法将程序集复制到文件,另一个程序正在使用,进程无法访问”的问题?
- [原] VS新添加WebApplication项目,无法运行,请求帮助,问题如何解决
- 如何解决由于服务过多或异常导致ArcGIS Server 无法正常运行的问题
- 如何解决MindManager应用程序无法正常启动问题
- XP下如何解决“ASP.NET 未被授权访问所请求的资源”的问题
- 解决Win2000Sever登录时“不支持网络请求,系统无法让您登陆”问题
- 如何解决内网无法用PORT方式访问FTP服务器的问题
- Windows Server 2003 下Msdtc不通导致工作流Windows Workflow Foundation无法正常运行问题的解决
- 文档库创建的子文件夹的URL显示为 http://[机器名]/.... 导致无法正常访问的问题解决办法
- 如何解决ASP.NET中中文不能正常显示问题