html页面如下:
<!DOCTYPE html >
<html>
<head>
<title></title>
</head>
<body>
<div id="result"></div>
<script src="js/cross.js" type="text/javascript"></script>
<script type="text/javascript">
(function() {
$jsonp('http://api.douban.com/v2/movie/in_theaters', { count: 10, start: 5 },
function(data) {
document.getElementById('result').innerHTML = JSON.stringify(data);
});
})();
// function test(data) {
// document.getElementById('result').innerHTML = JSON.stringify(data);
// }
</script>
</body>
</html>
Cross.js内容如下:
(function(window,document){
'use strict';
var jsonp=function(url,data,callback){
//1.挂载回调函数
var cbFunName='my_json_cb'+Math.random().toString().replace(".","");
window[cbFunName]=callback;
//2.将data转换为url字符串的形式
//{id:1,name:'zhangsan'}=>id=1&name=zhangsan
var querystring=url.indexOf("?") == -1 ? "?" : "&";
for(var key in data){
querystring+=key+'='+data[key]+'&';
}
//3.处理url中的回调参数
//url+=callback=my_json_cb3453454365465645
querystring+='callback='+cbFunName;
//4.创建一个script标签
var scriptElement=document.createElement('script');
scriptElement.src=url+querystring;
//5.将script标签放到页面中
document.body.appendChild(scriptElement);
}
window.$jsonp=jsonp;
})(window,document)
结果如下: