码迷,mamicode.com
首页 > 编程语言 > 详细

JavaScript手动实现JSONP代码

时间:2017-02-24 19:21:51      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:create   策略   amp   这一   通过   调用   clear   removes   利用   

浏览器的同源策略不允许我们直接通过ajax call别的域名上的url,但是script,img标签却米有这个限制,jsonp便是利用了这一点,通过在页面上生成一个src为我们所要调用url的script标签,能拿到服务器返回的结果,当然这个只支持get请求,同样,服务器端也要能够接受我们所传递的参数。

 

下面是一个例子:

<script>

function removeScript(scriptId) {
  const script = document.getElementById(scriptId);
  document.getElementsByTagName(‘head‘)[0].removeChild(script);
}


function clearFunction(functionName) {
  try {
    delete window[functionName]; //IE8下直接删除会报错
  } catch (e) {
    window[functionName] = undefined;
  }
}

function call(url) {
    var callbackFunction = Math.ceil(Math.random() * 100000 );
    url += (url.indexOf(‘?‘) === -1) ? ‘?‘ : ‘&‘;
    var jsonpScript = document.createElement(‘script‘);
    jsonpScript.setAttribute(‘src‘, `${url}callabck=${callbackFunction}`);
    jsonpScript.id = scriptId;
    document.getElementsByTagName(‘head‘)[0].appendChild(jsonpScript);

    window[callbackFunction] = function(data) {
        //在这里处理数据,然后最后记得一定要删除script并且将函数从window对象上删除掉。 
       //Handling data...   
        removeScript(scriptId);
        clearFunction(callbackFunction);
    }
}

</script>

 

JavaScript手动实现JSONP代码

标签:create   策略   amp   这一   通过   调用   clear   removes   利用   

原文地址:http://www.cnblogs.com/gogolee/p/6439664.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!