我的目的是将一些参数传递给struts2中的一个动作,但我希望这些参数必须隐藏,因此不建议使用GET调用。我认为jQuery中的post或ajax调用可能是一个好主意,但参数为null并且重定向到jsp页面并不起作用。以下是操作和JavaScript代码:
MyAction.java
public class MyAction extends ActionSupport{
private Long pkId;
private String type;
public String execute() {
String pkId = getPkId();
String type = getType();
return Action.SUCCESS;
}
}
file.js
function myFunction(){
var pkId = "pkId1";
var url = "./myAction.action";
var type = "type1";
$.ajax(url, {pkId : pkId, type : type});
}
更新的代码:
function myFunction(){
var pkId = "pkId1";
var url = "./myAction.action";
var type = "type1";
$.post(url, {pkId : pkId, type : type}, function(resp){
// resp is the response from the server after the post request.
});
}
答案 0 :(得分:0)
你所做的是对的。而不是$.ajax()
,请使用$.post
缩写形式:
$.post(url, {pkId : pkId, type : type}, function (resp) {
// resp is the response from the server after the post request.
});
所以file.js
包含:
function myFunction() {
var pkId = "pkId1";
var url = "./myAction.action";
var type = "type1";
$.post(url, {pkId : pkId, type : type}, function (resp) {
// resp is the response from the server after the post request.
});
}
如果您不想要异步请求,请将其设为默认表单。
function myFunction() {
var pkId = "pkId1";
var url = "./myAction.action";
var type = "type1";
var FormD = '<form method="post" action="' + url + '" id="frmFakeSubmit">';
FormD += '<input type="hidden" name="pkId" value="' + pkId + '" />';
FormD += '<input type="hidden" name="type" value="' + type + '" />';
FormD += '</form>';
$("body").append(FormD);
$("#frmFakeSubmit").submit();
}
希望这有帮助!
答案 1 :(得分:0)
$.ajax({
url: "<your url>",
type: "POST",
data: JSON.stringify(<your data>)
}).done(function(response) {
//TODO response from the sever
});
由于$.ajax
的默认请求方法是GET,因此您应该将类型参数指定为&#39; POST&#39;做post
请求。