js更改form action后,后台获取不到传递的参数

os6101 发布于 2014/04/18 10:43
阅读 2K+
收藏 0

<form id="listForm" name="listForm" action="/back/shop/list.do" method="get">

function search(){

//清空error信息
$("#error_msg").html("");

//检索条件赋值
var listForm = document.getElementById("listForm");
alert(listForm.action);
listForm.action = listForm.action +"?excel=1";

alert(listForm.action);//alert的路径也是更改后的全路径添加的参数值也是有的

listForm.submit();

}

提交之后。。后台 request.getParameter("excel") 老是空值。但listForm 其他的填充参数都能取到,这样的写法不对吗?在线急等啊



加载中
0
con
con

看一下submit时请求的url地址,里面应该没有excel=1了,submit动作把url的search部分重写了,会把?excel=1覆盖掉。在form里面加一个<input name="excel" type="hidden" value="1"/>,不改写action

con
con
回复 @os6101 : 因为form用get方式提交,就是拼接的search字段放在url中。 至于会覆盖原有的search字段而不是拼接到原来的search字段后面,是浏览器的实现机制吧,为什么这么实现就不清楚了。
os6101
os6101
后来用的是这种方法。牛逼。怎么会重写覆盖啊?
0
gnefil.nil
gnefil.nil

search()是怎么执行的?onclick?有没有把默认的事件停掉?

os6101
os6101
就像一楼说的。提交之后 url 又被重写覆盖了。所以一直取不到excel
0
char1st
char1st

请用post再试下。

os6101
os6101
因为是之前别的团队的项目,都是get提交,后台也是get接收,修改怕影响到其他地方。因为整体流程也不是很了解。
0
jQer
jQer

event.preventDefault();

os6101
os6101
谢谢一楼正解
0
移民後的葫蘆娃
移民後的葫蘆娃

用document.forms[0]获取form试试

os6101
os6101
谢谢。。一楼是对的
0
千斤难买春秋醉
千斤难买春秋醉


这样改是没效果的。。。@con说得对

我前段时间遇到过,问号后面的被忽略了。

可以用ajax的方式传递参数。

另外改成post也会获得参数,不过不建议,改成post后,后台实际上是一个get请求,你写一个demo实现doGet和doPost会发现


os6101
os6101
对。。谢谢
0
小赛

直接submit的话,会无视后面的get方式提交的参数。得写个隐藏域来接受数据

os6101
os6101
是的。。谢谢
返回顶部
顶部