javascript中的POST请求
我想在下面的javascript调用中更改从GET到POSTjavascript中的POST请求,java,javascript,servlets,post,get,Java,Javascript,Servlets,Post,Get,我想在下面的javascript调用中更改从GET到POST function redirect() { if (window.focus) self.focus(); this.location = "/test/DownloadReport? <%=ESAPI.encoder().encodeForJavaScript(request.getQueryString())%>"; } 函数重定向(){ if(window.focus) s
function redirect() {
if (window.focus)
self.focus();
this.location = "/test/DownloadReport?
<%=ESAPI.encoder().encodeForJavaScript(request.getQueryString())%>";
}
函数重定向(){
if(window.focus)
self.focus();
this.location=“/test/DownloadReport?
";
}
所以,我在下面做了-
function redirect() {
if(window.focus)
self.focus();
loc = '/test/DownloadReport';
var form = document.createElement("form");
var input = document.createElement("input");
input.setAttribute("value", "
<%=ESAPI.encoder().encodeForJavaScript(request.getQueryString())%>");
form.appendChild(input);
form.setAttribute("method", "post");
form.setAttribute("action", loc);
document.body.appendChild(form);
form.submit();
}
函数重定向(){
if(window.focus)
self.focus();
loc='/测试/下载报告';
var form=document.createElement(“表单”);
var输入=document.createElement(“输入”);
input.setAttribute(“值”
");
表单。追加子项(输入);
form.setAttribute(“方法”、“帖子”);
form.setAttribute(“action”,loc);
文件.正文.附件(表格);
表单提交();
}
但我面临的问题是,当执行此代码时,servlet会抛出错误,因为
请求。getQueryString()
不正确。我怀疑我为request.getQueryString()设置值的方式不正确。您能告诉我这里需要做什么吗?请记住,您的POST请求如下所示:
value=foo%3Dbar%26ipsum%3Dlorem
而您的GET请求看起来像:
foo=bar&ipsum=lorem
您可能需要为原始查询字符串中的每个参数添加一个输入。这可能会变得棘手
因此,不是:
<input name="value" value="foo=bar&ipsum=lorem" />
你需要:
<input name="foo" value="bar" />
<input name="ipsum" value="lorem" />
你这样做是不恰当的
ESAPI Javascript编码器将人类可读的Javascript转换为转义序列
请尝试以下代码:
input.setAttribute("value", "<%=request.getQueryString()%>");
input.setAttribute("type","hidden");
input.setAttribute(“value”和“”);
setAttribute(“类型”、“隐藏”);
谢谢您的回复。request.getQueryString()给出了以下输出&report_id=0&id=123345&id=6789,所以我使用了这个字符串firstId=str.substring(str.indexOf(&id=“)+4,str.lastIndexOf(&id”);String secondID=str.substring(str.lastIndexOf(“&id”)+4,str.length();输入.setAttribute(“名称”、“报告id”);input.setAttribute(“值”,“值”);输入.setAttribute(“名称”、“id”);input.setAttribute(“值”,“值”);输入.setAttribute(“名称”、“id”);input.setAttribute(“值”,“值”);表单。追加子项(输入);但是运气不好。遗漏了什么?这看起来像是一个糟糕的查询字符串<代码>id
在其中两次。使用适当的函数来解析查询字符串。我不知道Java是否有这样的功能,但它可能有。