在服务器的doPost顶部,我收集到达的参数名称,并使用request.getParameterValues(pName)遍历它们以收集其值。经过了充分的测试,目前正在为我的新交易生成此文件:
NodeID : []
function : [modify]
这告诉我正在发送参数'NodeID',但是没有值通过。我在提交表单之前发出了警报,以查看表单在开发人员的DOM显示中的外观,如下所示:
<form id="modify" action="/BackToTech/server?function=modify" method="post">
<input name="NodeID" value="28" />
</form>
这是生成并提交表单的javascript函数。
function modify(nodeID) {
alert("node.id = " + nodeID);
var root = document.body;
var form = $('<FORM>')
.attr('action', "/BackToTech/server?function=modify")
.attr('method', "post")
.attr('id', "modify")
.appendTo(root);
$('<INPUT>')
.attr('name', 'NodeID')
.attr('value', nodeID)
.appendTo(form);
//alert('delay');
$('#modify').submit();
}
第一个警报报告的节点ID为28。
有任何错误跳出来吗?我以为我最近对删除事务做了同样的事情,并且在用ajax调用代替它之前让它工作了,所以我对此方法充满信心。我想我可能还包括服务器doPost的顶部:
Enumeration<String> pNames = request.getParameterNames();
ArrayList<String> parameterNames = new ArrayList<String>();
while(pNames.hasMoreElements())
parameterNames.add(pNames.nextElement());
Object[] orderedNames = parameterNames.toArray();
Arrays.sort(orderedNames); //.sort(parameterNames)
for(int i=0; i<orderedNames.length; i++) {
String pName = orderedNames[i].toString();
for(int v=0; v<(25-pName.length()); v++) {
System.out.print(' ');
}
System.out.println(pName + " : " + Arrays.asList(request.getParameterValues(pName)));
}
找到了。在导航窗格中有一个我忘记了的同名表单。正在进行该事务的提交,其中没有人从随附的选择框中选择NodeID。