【问题标题】:How to pass parameters to an action by a post or ajax call in jQuery?如何通过 jQuery 中的 post 或 ajax 调用将参数传递给操作?
【发布时间】:2015-09-09 09:25:19
【问题描述】:

我的意图是在 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;
     }
}

文件.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.
        });
    }

【问题讨论】:

标签: javascript jquery struts2


【解决方案1】:

你做的是对的。代替$.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();
}

希望这会有所帮助!

【讨论】:

  • 感谢您的回答。我按照您的建议编辑了我的代码;参数已正确传递,但在我的操作成功后重定向到 jsp 页面不起作用。我不知道我必须在函数方法中添加什么。
  • 你想重定向到哪里?你想重定向到"./myAction.action"吗?
  • 是的,我想重定向到填充了两个参数的操作。
  • @chris 那么你不应该使用 AJAX。 AJAX 仅适用于异步。让我更新我的答案。
  • @chris 现在看看!
【解决方案2】:
 $.ajax({
     url: "<your url>",
     type: "POST",
     data: JSON.stringify(<your data>)
 }).done(function(response) {
    //TODO response from the sever
 });

由于$.ajax的默认请求方法是GET,所以你应该指定类型参数为'POST'来进行post请求。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-18
    相关资源
    最近更新 更多