ie onbeforeunload 请求后台 断开连接

来源:互联网 发布:爆炸物品数据上报日期 编辑:程序博客网 时间:2024/06/06 12:51

方法一:解决方法是 在卸载页面前 请求一个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