提交页面,中途选择选项时跳转了页面,返回提交页面时刷新了,以前的数据消失,解决方法:利用session存储数据,返回时再取出回显

思路:一、点击跳转时利用session把数据存起来
二、跳转页面再存session回提交页(可以略过,我的是因为新页面需要传数据回来,才在新页面也存了一个session)
三、返回页面,sessionStorage.getItem(key)获取之前存储的数据再放回页面中

实现:
一、点击跳转时利用session把数据存起来
1.先保存需要存储的数据
var model = {};//var一个空对象,里面用来存所有数据 model.Pics = []//对象里的数组
2.存值
我的是在跳转的方法里获取值,跳转时存session
$(".xzzc_select").click(function () { window.location.href =
"/FeedBack/ChoosePosition"; //session model.ComplainLables = $('.ts-item-w').
children(".active").text()//获取的所需的数据 model.CommentType = $('#commentType').
children(".active").attr('value') //存值,session只能存字符串,需要转换 sessionStorage.setItem
("key", JSON.stringify(model)) })
二、跳转页面再存跳转页面的session回提交页
这是跳转的页面
function sureFunc() { //获取选中的 var orgId = $("input:radio:checked").attr(
"orgId"); //存session 需要返回给提交页面的数据 sessionStorage.setItem("orgId", orgId); window
.history.go(-1); }
三、返回页面,获取存储的数据再放回页面中
跳转回来之后,在提交的页面
param和model需要注意,param是传给后台的值,model是存储的值。
$(function () { //获取选项页面穿过来的session var cpId = sessionStorage.getItem("orgId")
; if (cpId) { param.MPlatId = cpId }//param.MPlatId是需要传给后台的
//获取之前存的session,存的时候转换过,现在用JSON.parse()方法转换回来,否则打印就时[object object] var subModel
= JSON.parse(sessionStorage.getItem("key")); if (subModel) {//如果有值 console.log(
subModel); //这里重新绑定选中的数据到界面, //如果model.ComplainLable有值,就放回 if (subModel.
ComplainLables) { $('.xzzc_select .val').text(subModel.ComplainLables)} //
//图片放回例子 if (subModel.Pics) { //param是提交所需要的数据,重新回来之后为空了,重新赋值给param param.Pics =
subModel.Pics for (var a = 0; a < subModel.Pics.length; a++) { var Nhtml = "";
Nhtml+= '<span class="fileBox pull-left" name="fileBox"
style="margin-right:10px;">';
//这里给x删除,另外添加了一个自定义属性url,和上传的图片的url一样,为了删除时同时删除model.Pics里面的 Nhtml += '<img
class="filedel" οnclick="fileRemove(this)" src="/images/img_closed2_nor.png"
url="' + subModel.Pics[a] + '">'; Nhtml += '<img src="' + subModel.Pics[a] + '"
class="fileimg" />'; Nhtml += '</span>'; $(".dimg-wrap").prepend(Nhtml); } } }
图片删除功能:因为是上传成功一张,就push一张进param.Pics,如果删除不仅要从页面删除图片,也要从param.Pics的数组里删除,有点麻烦

* 注意 我的model.Pics,直接是param.Pics=model.Pics这样赋值的 //小x删除的点击事件 function
fileRemove(obj) { var url = $(obj).attr("url");//获取点击删除的url属性值 var deleteIndex =
getDeleteIndex(url);//传参调用方法,返回所要删除的下标 debugger; if (deleteIndex > -1) {
//这是为什么删的是param里面的值,因为存图片的时候 model的值我是直接param.Pics=model.Pics的
//删了param.Pics里面的值,model.Pics也会被删,结果一样的 param.Pics.splice(deleteIndex, 1)//删除 }
$(obj).parents("span.fileBox[name=fileBox]").remove();//从页面删除图片 } function
getDeleteIndex(url) { var index = -1; param.Pics.forEach(function (v, cindex) {
//v是图片url,cindex是下标 //如果点击删除的url和param.Pics里某个图片的url一样 if (v == url) { index =
cindex; } }); return index;//返回下标 }
大概就是这样。有点乱
可以先写不需要跳转刷新的情况下数据提交,提交成功后 再来写跳转刷新后重新获取值的提交
提交传数据给后台 param和model之间:
param的有些值是在别的方法里赋值的,刷新之后,这个值就没有了,提交的这个值就是underfind,
那就可以var subModel = JSON.parse(sessionStorage.getItem("key"));
if (subModel){ param.Pics = subModel.Pics }在有session的情况下,把session存的值给param.

技术
下载桌面版
GitHub
Gitee
SourceForge
百度网盘(提取码:draw)
云服务器优惠
华为云优惠券
腾讯云优惠券
阿里云优惠券
Vultr优惠券
站点信息
问题反馈
邮箱:[email protected]
吐槽一下
QQ群:766591547
关注微信