jsonp是怎么通过script标签进行跨域的

 我来答
Aileen0509
2016-10-02 · TA获得超过1492个赞
知道小有建树答主
回答量:371
采纳率:0%
帮助的人:414万
展开全部

script标签的还在是可以跨域的,jsonp 就是利用这一点来跨域。

在 GET 请求中,我们都是为了获取远程的一些数据,所以要实现的目的就是服务器端代码要通过某种方式让 JavaScript 能够拿到数据。所以,jsonp 的实现大概有以下几个步骤:


  1. 创建一个全局的临时函数,并在函数内调用响应回调

        

// jsonp1 是生成的一个临时函数名,可以通过简单的计数来生成,如jsonp2, jsonp3

// 生成不同的函数的目的是为了防止多个 jsonp 同时请求,回调的函数被覆盖

window.jsonp1 = function( data ) {
    
    // 调用在成功之后的回调方法
    
    onsuccess( data );
    
    // 删除临时函数,释放内存
        
    window.jsonp1 = null;
    
};


2. 通过  document.createElement( 'script' ) 创建 script 标签,src 属性设置成远程的 api 的 url。其实就是让浏览器加载一段 JS,这段 JS 就是服务器返回的内容。


3. 服务器端对返回的数据进行包装,生成一段 JS,这段 JS 里面调用了 jsonp1 这个方法,并且把数据作为参数传进去。


4. script 标签加载完成之后,jsonp1 被执行,通过 onsuccess 将 data 传递给回调方法,jsonp1 方法被销毁,释放内存。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式