ie onbeforeunload 请求后台 断开连接

方法一:解决方法是 在卸载页面前 请求一个img ,src 是要请求的url

	//页面卸载保存session
	$window.onbeforeunload = function(){
			var params = {
					taskId : $rootScope.taskInfo.taskId,
					afterId :$scope.defaultSetting.lastTaskId ,
					dependIds : $scope.subTaskDependList.join(","),
					wdependIds :$scope.whichDependSubTaskList.join(","),	
					projName : $scope.projectNameList.join(","),	
					projType : $scope.defaultSetting.projectTypeId,	
					projRole : $scope.defaultSetting.projectOwnerRoleId,	
					projPo	: $scope.defaultSetting.projectOwnerId,
					projTemp : $scope.defaultSetting.templateId,
					addProjType	: $scope.defaultSetting.addProjType,
					fixedDate :	 $scope.subFixedDateSel ,
					addSubProjType :$scope.defaultSetting.createSubProjectType
				};
			var img=$("<img>")
			img.attr("src",baseUrl+"service/task/process/addProjectTask/saveAddProjectTaskSession?"+$.param(params))
			$("body").append(img)
				
		}



方法二:用普通jq ajax 但是url 要绝对路径

var u=window.location.origin+baseUrl
//页面卸载保存session
$window.onbeforeunload = function(){
var params = {
taskId : $rootScope.taskInfo.taskId,
afterId :$scope.defaultSetting.lastTaskId ,
dependIds : $scope.subTaskDependList.join(","),
wdependIds :$scope.whichDependSubTaskList.join(","),
projName : $scope.projectNameList.join(","),
projType : $scope.defaultSetting.projectTypeId,
projRole : $scope.defaultSetting.projectOwnerRoleId,
projPo : $scope.defaultSetting.projectOwnerId,
projTemp : $scope.defaultSetting.templateId,
addProjType : $scope.defaultSetting.addProjType,
fixedDate : $scope.subFixedDateSel ,
addSubProjType :$scope.defaultSetting.createSubProjectType
}
$.ajax({
url:u+"service/task/process/addProjectTask/saveAddProjectTaskSession",
type:"GET",
data: params
}); 
}


知识点:

jQuery ajax - param() 方法


序列化一个 key/value 对象:

var params = { width:1900, height:1200 };
var str = jQuery.param(params);
结果:
width=1680&height=1050
该序列化值可在进行 AJAX 请求时在 URL 查询字符串中使用。

除了key/value 还可以是数组对象。

var arrScore =[{name:"first",value:"Rick"},
{name:"last",value:"Astley"},
{name:"job",value:"Rock Star"}]
alert($.param(arrScore))
结果
first=Rick&last=Astley&job=Rock+Star

我们可以如下显示对象的查询字符串表示以及 URI 编码版本:
var myObject = {
  a: {
    one: 1, 
    two: 2, 
    three: 3
  }, 
  b: [1,2,3]
};
var recursiveEncoded = $.param(myObject);
var recursiveDecoded = decodeURIComponent($.param(myObject));

alert(recursiveEncoded);
alert(recursiveDecoded);
结果:

recursiveEncoded:

a%5Bone%5D=1&a%5Btwo%5D=2&a%5Bthree%5D=3&b%5B%5D=1&b%5B%5D=2&b%5B%5D=3
recursiveDecoded :

a[one]=1&a[two]=2&a[three]=3&b[]=1&b[]=2&b[]=3

  //$.param() 序列化成url字符串      
            var man = { Name: "张飞", Age: 23 };    
            var str = $.param(man);    
            console.log(str);      //Name=%E5%BC%A0%E9%A3%9E&Age=23    
            var str1 = decodeURI(str);    
            console.log(str1);  //Name=张飞&Age=23    
    
            //$.parseJSON() 该函数会解析JSON格式的字符串,并返回解析结果(对象)。 类似于JSON.parse()    
            var man = { name: "张三", age: 23 };    
            var str = JSON.stringify(man);  //stringify用于从一个对象解析出字符串    
                
            console.log(str); //{"name":"张三","age":23}    
            var man1 = $.parseJSON(str);  //parseJSON 用于从一个字符串中解析出json 对象    
            var man2 = JSON.parse(str); //parse 用于从一个字符串中解析出json 对象    
            console.log("$.parseJSON " + man1.name + man1.age); //张三23    
            console.log("JSON.parse " + man2.name + man2.age); //张三23    

参考文献

http://blog.csdn.net/chenchunlin526/article/details/62226746

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值