今天做菜单管理,菜单的url是菜单表单的一个字段,由于url较复杂,带有多个参数:/mgr/oms/catalog/catgroupMain.jsp?catalogId=10220&storeentIdSelected=10051&treeInitType=1
用post方式提交表单
var data = $('#frmEditModule').serializeArray();
$.post(url, data, submitCallback);
保存完成后url字段没能保存&及其以后的字符串。(post提交的时候,参数会跟在当前URl后面做其参数进行拼接:
/save.action?url=/mgr/oms/catalog/catgroupMain.jsp?catalogId=10220&storeentIdSelected=10051&treeInitType=1
)从上面的显示可以看出,后台会吧&后面当成当前action的参数,所以保存的url只会丢失部分数据。
既然知道了原理,为了解决这个问题,我们就需要在前段对&符号进行编码,现有的编码有escape,encodeUri,encodeUriComponent;
以上三种我都试过了,只有escape会对&进行编码,对url字段进行编码后:
/mgr/oms/catalog/catgroupMain.jsp?%25catalogId%3d10220%26storeentIdSelected%3D10051%26treeInitType=1;
这个是我前台处理的全部代码:var menuUrl =