js权威指南_第18章:脚本化Http
例18-14:
//使用script元素发送jsonp请求 //根据指定的url发送一个jsonp请求 //把解析到的响应数据传递给回调函数 //在url中添加一个名为jsonp的查询参数,用于指定该请求的回调函数的名称 function getJSONP(url,callback){ //为本次请求创建一个唯一的回调函数名称 var cbnum="cb"+getJSONP.counter++; var cbname="getJSONP."+cbnum; //将回调函数名称以表单编码的形式添加到url的查询部分 //使用jsonp作为参数名,支持jsonp的服务能分辨出这个参数名 //设置url的查询部分 if(url.indexOf("?") == -1){ url+="?jsonp="+cbname; }else{ url+="&jsonp="+cbname; } //创建script元素用于发送请求 var script=document.createElement("script"); //定义将被脚本执行的回调函数 getJSONP[cbnum]=function(respomse){ try{ callback(respomse); }finally{ //删除该函数 delete getJSONP[cbnum]; //移除script元素 script.parentNode.removeChild(script); } }; //立即触发http请求 script.src=url; document.body.appendChild(script); } getJSONP.counter=0;//用于创建唯一回调函数名称的计数器