问题描述
我在js中用document.getElementsByName("idFields").value=idFields;document.form.submit();为什么在servlet中用request.getParameter("idFields");得到的是null而document.getElementsByName("idFields").value=idFields;alert(document.getElementsByName("idFields").value);document.form.submit()确有值。注:这个情况有时出现,有时不出现。但alert后不会出现 问题补充:idFields是数组数据,用的是tomcat,测试用ie8,有人说是js赋值还没有完成请求就被提交导致...
解决方案
大概就是因为 document.getElementsByName("idFields") 返回的是数组,给数组赋值没赋进去,而alert之后js引擎强制转化了。document.getElementsByName("idFields").value = xxxx这个xxx是赋值到了 数组上 而并没有赋值到你的目标元素上,所以提交不到服务器端document.getElementsByName("idFields")[0].value 应该就没问题了,不过正确的用法应该还要判断下 document.getElementsByName("idFields")取得元素是否大于0
解决方案二:
标准Javascript里是没有getElementsByName的。只有getElementById和getElementsByTagName你这个需要循环迭代赋值。你可以贴出HTML部分的代码
解决方案三:
不要用document.getElementsByName,使用document.getElementById吧。document.getElementsByName("idFields").value=idFields; document.form.submit(); 你的form表单的name属性是"form"?最好不要用"form"这种关键字来给form命名。用下面这种方式提交表单,可以省掉很多麻烦,包括浏览器的兼容问题document.forms['formname'].submit();
解决方案四:
提交之前将action后面加上?idFields=idFields,在进行submit
解决方案五:
难道是跟IE8有关系,本人一直使用IE6,没有遇到过这种问题。建议在IE6下测试一下看看。
解决方案六:
哥啊。。肯定得到是NULL啊这种方式获取document.getElementsByName("idFields")应该得到的是一个数组 1. request.getParameter("idFields"); 并且获取的方式也不对。应该是这种request.getParameterValues("")如果按照你贴出了的
解决方案七:
idFields 是数组数据?有时候跟web服务器有关系,之前碰到过,在tomcat下没有问题,在weblogic就有问题。