Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript中的POST请求_Java_Javascript_Servlets_Post_Get - Fatal编程技术网

javascript中的POST请求

javascript中的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

我想在下面的javascript调用中更改从GET到POST

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是否有这样的功能,但它可能有。