我试图在Groovy服务器页面中实现一个链接,该链接发送一个POST请求,其中包含他们点击的链接文本到另一个GSP,然后加载该页面。我已经从StackOverflow上的其他问题尝试了几个不同的解决方案来解决这个问题,但是每一个问题最终都会引发<script type="text/javascript" src="resources/post.js"></script>
<a href="actions/manage.gsp" onclick="post('/actions/manage', {name: '${file}'});">${file}</a>
错误。这里发生了什么?我也对不同的方法感兴趣。
请求:
function post(path, params, method) {
method = method || "post";
var form = document.createElement("form");
form.setAttribute('enctype','multipart/form-data').
form.setAttribute("method", method);
form.setAttribute("action", path);
for(var key in params) {
if(params.hasOwnProperty(key)) {
var hiddenField = document.createElement("input");
hiddenField.setAttribute("type", "hidden");
hiddenField.setAttribute("name", key);
hiddenField.setAttribute("value", params[key]);
form.appendChild(hiddenField);
}
}
document.body.appendChild(form);
form.submit();
}
post.js:
<%! static output = "text/html" %>
Testing!
<% log.info("Found ${request.parts.size()} parts") %>
manage.gsp:
{{1}}
答案 0 :(得分:1)
在form.setAttribute(&#39; enctype&#39;,&#39; multipart / form-data&#39;)之后删除点拼写错误;
function post(path, params, method) {
method = method || "post";
var form = document.createElement("form");
form.setAttribute("enctype","application/x-www-form-urlencoded");
form.setAttribute("method", method);
form.setAttribute("action", path);
for(var key in params) {
if(params.hasOwnProperty(key)) {
var hiddenField = document.createElement("input");
hiddenField.setAttribute("type", "hidden");
hiddenField.setAttribute("name", key);
hiddenField.setAttribute("value", params[key]);
form.appendChild(hiddenField);
}
}
document.body.appendChild(form);
form.submit();
}
谈到这个概念,我想为你提供这个:
function post(path, params, method) {
method = method || "post";
var formData = new FormData();
for(var key in params) {
if(params.hasOwnProperty(key)) {
formData.append(key,params[key] );
}
}
$.ajax({
type: method,
url: path,
data: formData,
cache: false,
contentType: false,
processData: false
}).done(function( result ) {
//alert(result)
});
}
答案 1 :(得分:-1)
我认为您错过了“输入类型=文件”。