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