JSONP对另一个域进行Ajax请求

问题描述:想要使用一个Web服务API来查询数据,而Ajax同源策略阻止了跨域请求。
解决方案:一种方法是使用JSONP(JavaScript Object Notation,with Padding)来解决安全问题。首先创建一个新的script元素,用URL作为API方法调用的端点。

<!DOCTYPE html>
<html>
<head>
  <title>JSONP 跨域请求</title>
</head>
<body>
  <div id="result"></div>
  <script type="text/javascript">
  function addScript(url){
    var script = document.createElement("script");
    script.src = url;
    document.getElementsByTagName("head")[0].appendChild(script);
  }
  addScript('https://api.flickr.com/services/rest/?method=flickr.photos.search&user_id=NSID&api_key=yourapikey&page=1&format=json&jsoncallback=processPhotos');
 /*addScript('https://baike.baidu.com/pic/flickr/714868/0/a8773912b31bb0513b6ec394347adab44bede0c0?fr=lemma&ct=single#aid=0&pic=a8773912b31bb0513b6ec394347adab44bede0c0/');*/
  //全局地分配照片,在加载前调用
  function processPhotos(obj){
    photos = obj.photos.photo;
    var str = '';
    photos.foreach(function(photo){
      str += photo.title +'<br/>';
    });
    document.getElementById('result').innerHTML = str;
  }
  </script>
</body>
</html>

我们将URL转化为可附加到一个脚本的src属性的形式,因为script元素不会遵从同源策略。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值