url参数过长处理办法

常用的解决办法是将get请求换成post,但是遇到只能用get请求的时候,该怎么解决呢? 答案是: 我们可以借用form表单提交

在开发过程中,遇到这么一个问题:我需要在A点击一个按钮,打开一个新的页面B,但是由于参数过长,导致页面请求失败,找了很多办法,终于解决了

//A页面
function printStoreIn() {
  window.open("A.vm?sid="+sid);
}

 

<script type='text/javascript'> 
//B页面
var sid= jQuery.request("sid");
jQuery.ajax({
	url: 'XX.do',
	type: 'post',
	dataType: 'json',
	data: {
		"sid":sid
	},
	success: function (result) {
		if(result.isOk) {
			var s =[]; 
			var param;
			var data = result.data;
			if (data){
				for(var i=0; i<data.length; i++){
					param = '&sid='+sid+ '&pid=' + data[i].pid;
					s.push(data[i].pname+',/simple/v.do?_m=/B.vm'+param);
				}
				var tempForm = document.createElement("form"); 
				tempForm.id="tempForm1";
				tempForm.method="post"; 
				tempForm.action="/tabs.jsp"; 
				var hideInput = document.createElement("input");    
				hideInput.type="hidden"; 
				hideInput.name= "tabs"; 
				hideInput.value= Uri(s.join(";"));
				tempForm.appendChild(hideInput); 
				if(document.all){
			        tempForm.attachEvent("onsubmit",function(){ });        //IE
			    }else{
			        var subObj = tempForm.addEventListener("submit",function(){ },false);    //firefox
			    }
			    document.body.appendChild(tempForm);
			    if(document.all){
			        tempForm.fireEvent("onsubmit",function(){ });
			    }else{
			        tempForm.dispatchEvent(new Event("submit"));
			    }
			    tempForm.submit();
			    document.body.removeChild(tempForm);
			}
		}
	},
	error: function (XMLHttpRequest, textStatus, errorThrown) {
		mini.alert("加载失败!");
	}
});
</script>

 参考资料:https://blog.csdn.net/blacktsky/article/details/52909660

posted @ 2018-05-25 09:35  筱小Q  阅读(9728)  评论(0编辑  收藏  举报