JS跨域请求封装

因为要用到JS的跨域所以封装了一下:直接上代码

/**
 * 异步请求JS
 * url:执行跨域请求的url
 * blankurl:跨域过程中请求域中的空白页面(空白即可) 必须要的
 * data:跨域post请求的参数{"a":"1","b","2"}格式
 * fn:请求之后的回掉函数
 * @author :LYH
 */
var sync={
		post:function (url,blankurl, data, fn){
			  var form = document.createElement("form");
			  form.id = form.name = 'postForm';
			  //创建表单数据
			  if (data) {
			    for(var key in data) {
			      var input = document.createElement("input");
			      input.type = "hidden";
			      input.name = key;
			      input.value = data[key];
			      form.appendChild(input);
			    }
			  }
			  //创建iframe
			  var iframe = null;
			  //try&catch是为了解决IE67创建iframe新开窗问题
			  try {
			    iframe = document.createElement('<iframe name="postIframe">');
			  } catch (ex) {
			    iframe = document.createElement('iframe');
			  }
			  iframe.id = iframe.name = "postIframe";
			  iframe.width = "1";
			  iframe.height = "1";
			  iframe.style.display = "none";
			  document.body.appendChild(iframe);
			  //表单提交
			  document.body.appendChild(form);
			  form.action = url;
			  form.target = iframe.name;
			  form.method = "post";
			  form.submit();
			  //事件处理
			  if(iframe.attachEvent){
			    iframe.attachEvent("onload", _loadFn);
			  }else{
			    iframe.onload = _loadFn;
			  }
			//记录iframe的状态
			iframe.state = 0;
			function _loadFn(){
				if(iframe.state == 1){
					var data = '';
					try{
						data = iframe.contentWindow.name;
					}catch(e){
						console.log(e);
					}
					
					//执行回掉
					fn && fn(data);	
					//清除iframe;
					iframe.onload = null;
					document.body.removeChild(iframe);
				}else if(iframe.state == 0){
					iframe.state = 1;
					iframe.contentWindow.location = blankurl
				}
			}
		}
}

把上面代码放到一个js文件中命名位 asyncpost.js 然后页面引用 例如:

<script type="text/javascript" src="${resSys}/asyncpost.js"></script>
<script type="text/javascript">
//加载完开始执行
window.onload = function(){
	sync.post("${config.siteLoginurl}","sso_blank.jspx",{
		"${config.siteAccount}":"${username}",
		"${config.sitePassword}":"${password}",
		<#list param_list?keys as key>
		"${key}":"${param_list[key]}",
		</#list>
		},function(data){
			console.log(data);
			window.location.href="${config.siteIndexurl}";
	});
}
</script>

 

转载于:https://my.oschina.net/riaway/blog/736397

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值