我正在向RESTFUL api发出POST请求,我可以传递参数的唯一方法是将它们添加到表单'action'参数中使用的URL中。当我获取这些参数并将它们放入表单的主体组件中时,请求就不再起作用了。我的问题是如何使用表单内的输入来定义请求参数,而不是将参数嵌入到动作URL中?
我注意到,当我提交请求时,请求体参数显示出来,但实际的请求失败了,说参数不存在。
下面是HTML:
<form target="hiddenIframe" method="POST" action="/rest/bpm/wle/v1/process/5853?action=addDocument&name=test123&docType=file&parts=none&accept=application/json&override-content-type=text/plain" enctype="multipart/form-data">
<input type="text" name="instanceId" value="5823" />
<input type="text" name="name" value="myTestQ1" />
<input type="text" name="docType" value="file" />
<input id="myFileName" type="file" name="data" />
<input type="submit"/>
</form>
<iframe name="hiddenIframe" id="hiddenIframe" style="display: none;" />
你可以看到表单标签中的动作很长,不是动态的…我想只有"/rest/bpm/whole/v1/process/"在那里,但是当我做上传失败。
我会使用一些Javascript。向所有强制输入字段添加onchange。你将调用的change方法可以用表单字段中的新数据更新action url。
类似:
<input type="text" name="instanceId" value="5823" onchange="updateInstanceID()" id="instanceid" />
action="/rest/bpm/wle/v1/process/5853?action=addDocument&name=test123&docType=file&parts=none&accept=application/json&override-content-type=text/plain"
现在,你的Javascript应该有这个方法。
function updateInstanceID() {
var val = document.getElementById("instanceid").value;
var form = document.forms[0]; // assuming only one form on the page.
....
}
现在您可以访问表单了。