如何通过jQuery中的post或ajax调用将参数传递给动作?

时间:2015-06-23 14:10:29

标签: javascript jquery struts2

我的目的是将一些参数传递给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.
        });
    }

2 个答案:

答案 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请求。