jQuery下ajax发起jsonp请求过程

最近要把知识系统的一些文档页面迁移到自己的系统里,作为技术人员的我想的第一件事儿就是怎么用技术实现,直接用get请求把页面拉取下来就涉及到跨域请求问题,用script或者img标签的话,页面拿过来了,但是不能处理。最后,我想到了jsonp,之前没怎么听过jsonp,平时用都是用的jquery里面的,于是研究了一下jquery的ajax的源码,发现jsonp这玩意让我大跌眼镜。

JSONP的核心原理是:把ajax的回调函数挂到window上,比如window.jsonp, 然后构造script标签(script跨域请求是合法的),用script标签请求目标,并且带上callback参数,callback的值是挂在window上的处理函数(如window.jsonp).到时候那边就会返回诸如:jsonp(content)格式,jsonp函数就开始执行。

下面是一个例子:

<script type="text/javascript">
//挂在window下的全局函数
function jsonp_example(result){
    //do something with result
    alert(result);//result is test
}
var script_element = document.createElement('script');
script_element.type="text/javascript"
script_element.src="http://xiunen.duapp.com/crossdomain.php?callback=jsonp_example";//注意上面加粗的地方
document.body.appendChild(script_element);
</script>

在http://xiunen.duapp.com/下的crossdomain.php页面处理请求如下:

<?php
   $callback = $_REQUEST['callback'];//获取callback参数的值,注意上面标注橙色的地方
   $output = 'test';//注意上面标注红色的地方
   echo $callback."($output)";
?>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值