Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.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 如何在jQuery中通过post或ajax调用将参数传递给操作?_Javascript_Jquery_Struts2 - Fatal编程技术网

Javascript 如何在jQuery中通过post或ajax调用将参数传递给操作?

Javascript 如何在jQuery中通过post或ajax调用将参数传递给操作?,javascript,jquery,struts2,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

我的目的是在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.
        });
    }

你所做的是对的。不要使用
$.ajax()
,而是使用
$.post
缩写:

$.post(url, {pkId : pkId, type : type}, function (resp) {
  // resp is the response from the server after the post request.
});
因此
文件.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();
}
函数myFunction(){
var pkId=“pkId1”;
var url=“./myAction.action”;
var type=“type1”;
var FormD='';
FormD+='';
FormD+='';
FormD+='';
$(“正文”)。附加(表格D);
$(“#frmFakeSubmit”).submit();
}
希望这有帮助

$.ajax({
 $.ajax({
     url: "<your url>",
     type: "POST",
     data: JSON.stringify(<your data>)
 }).done(function(response) {
    //TODO response from the sever
 });
url:“”, 类型:“POST”, 数据:JSON.stringify() }).完成(功能(响应){ //来自服务器的TODO响应 });

由于
$.ajax
的默认请求方法是GET,因此您应该将type参数指定为'POST'来执行
POST
请求。

您没有指定需要
POST
请求。
$.ajax()
调用的默认值是
GET
。指定文档中解释的
方法
。可能重复感谢您的回答。我按照你的建议编辑了我的代码;参数传递正确,但在我的操作成功后重定向到jsp页面不起作用。我不知道我必须在函数方法中加入什么。你想重定向到哪里?是否要重定向到
“/myAction.action”
?是的,我想在填充了两个参数的情况下重定向到我的操作。@chris,那么您不应该使用AJAX。AJAX只适用于异步。让我更新我的答案。@chris现在看看!