原生JavaScript封装的jsonp跨域请求


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>跨域的jsonp请求</title>
</head>
<body>
    <script>
    (function(window,document){
        //该函数接受三个参数,请求的地址,请求的数据(对象格式),回调函数
        // 回调函数可接受一个参数用来返回请求到的信息
        var jsonp = function(url,data,callback){
            // 第一步:挂载回调函数
            //cbFuncName为回调函数名
            var cbFuncName = "my_jsonp_cb" + Math.random().toString().replace(".",‘‘);
            window[cbFuncName] = callback;
            //第二步:将请求的数据转换为字符串格式
            var queryString = url.indexOf(‘?‘)===-1?‘?‘:‘&‘;
            for(var key in data){
                queryString += key + ‘=‘ + data[key] + ‘&‘;
            }
            //第三步:处理URL中的回调参数(callback为回调参数名)
            queryString += ‘callback=‘ + cbFuncName;
            // 第四步:创建一个script标签
            var script = document.createElement("script");
            //第五步:将所请求的地址赋给script标签的src属性
            script.src = url + queryString;
            //第六步:将script标签插入到页面当中
            document.body.appendChild(script);
        };
        //将jsonp函数赋给window对象
        window.$jsonp = jsonp;
    })(window,document);
    </script>

</body>
</html>

原文地址:https://www.cnblogs.com/thatme/p/10208279.html

时间: 2024-10-08 23:33:02

原生JavaScript封装的jsonp跨域请求的相关文章

Jsonp 跨域请求实例

关于jsonp的一个实例,其实自己也不是很了解,今天下午稍微研究了一下: 简单来说,jsonp就是为了两个不同网站之间数据传递而产生的,主要用于js脚本,因为浏览器本身是禁止跨域访问的: 本机实例: http://127.0.0.1:80/index.php <script src="http://cdn.staticfile.org/jquery/1.11.1/jquery.min.js"></script> <script type="tex

JSONP跨域请求数据报错 “Unexpected token :”的解决办法

原文  http://www.cnphp6.com/archives/65409 Jquery使用ajax方法实现jsonp跨域请求数据的时候报错 “Uncaught SyntaxError: Unexpected token :”,主要问题在于返回的数据格式不正确 本地虚拟两个域名,分别为:www.test.com.www.abc.com http://www.test.com/index.html页面点击按钮,请求返回 www.abc.com域名目录下的文件的数据 ,其代码为: <!DOCT

JS的jsonp是什么?5分钟学会jsonp跨域请求

一.jsonp是什么? jsonp是解决跨域请求的一种技术.浏览器为了防止CSRF攻击会采用同源策略(协议/主机/端口均相同)限制,对非同源发起http请求(即跨域请求)会被浏览器阻止. 二.jsonp跨域请求的原理? script标签的src属性不受同源策略限制,用此方式对非同源服务器请求资源,返回的JS代码会调用指定的函数,携带的参数就是所需的数据,这样就完成了跨域请求. 三.原生JS的jsonp跨域请求: 首先声明一个处理返回数据的函数,返回的JS代码会调用此函数: function do

.net学习之母版页执行顺序、jsonp跨域请求原理、IsPostBack原理、服务器端控件按钮Button点击时的过程、缓存、IHttpModule 过滤器

1.WebForm使用母版页后执行的顺序是先执行子页面中的Page_Load,再执行母版页中的Page_Load,请求是先生成母版页的控件树,然后将子页面生成的控件树填充到母版页中,最后输出 2.WebForm使用母版页进行登录时候的验证 //新建一个页面父类 public abstract class BasePage:Page { protected void Page_Load(object sender, EventArgs e) { //1.身份验证的方法 Session if (Se

使用JSONP跨域请求数据

下面代码,可以使用JSONP进行跨域请求数据,Insus.NET记录以下,以备忘记. 使用JSONP跨域请求数据

JSonP跨域请求

我们在通过自己的页面或程序通过ajax请求其它网站或服务时,会存在一个ajax直接请求普通文件存在跨域无权限访问的问题,甭管你是静态页面.动态网页.web服务.WCF,只要是跨域请求,一律不准.不过我们又发现,Web页面上调用js文件时则不受是否跨域的影响(不仅如此,我们还发现凡是拥有"src"这个属性的标签都拥有跨域的能力,比如<script>.<img>.<iframe>).   于是可以判断,当前阶段如果想通过纯web端(ActiveX控件.服

原生JS实现Ajax的跨域请求

原生JS如何实现Ajax的跨域请求? 在解决这个问题之前,我们务必先清楚为什么我们要跨域请求,以及在什么情况下会跨域请求. 了解一下:"同源策略",你就知道了: 同源策略限制从一个源加载的文档或脚本如何与来自另一个源的资源进行交互.这是一个用于隔离潜在恶意文件的关键的安全机制. 它的定义是: 一段脚本向后台请求数据,只能读取属于同一协议名.同一主机名.同一端口号下的数据: 所以,请求不同协议名.不同端口号.不同主机名下面的文件时, 将会违背同源策略,无法请求成功,需要进行跨越处理!!

轻松搞定JSONP跨域请求

一.同源策略 要理解跨域,先要了解一下"同源策略".所谓同源是指,域名,协议,端口相同.所谓"同源策略",简单的说就是基于安全考虑,当前域不能访问其他域的东西. 一些常见的是否同源示例可参照下表: 在同源策略下,在某个服务器下的页面是无法获取到该服务器以外的数据的.例如我们在自己的网站通过ajax去获取豆瓣上https://developers.douban.com/wiki/?title=api_v2提供的接口数据.这里我们以搜索图书为例,参数链接为:https:

JSONP(跨域请求) —— 一种非官方跨域数据交互协议

1.JSONP的作用 由于同源策略的限制,XmlHttpRequest只允许请求当前源(域名.协议.端口)的资源,为 了实现跨域请求,可以通过script标签实现跨域请求,然后再服务器端输出JSON数据并执行回调函 数,从而解决了跨域的数据请求. JSONP协议的一个要点:允许用户传递一个callback参数给服务器端,然后服务器端返回数据时 会将这个callback参数作为函数名来包裹住JSON数据,这样客户端就可以随意定制自己的函数来自 动处理返回函数了. 2.如何使用JSONP? 在客户端