【问题标题】:ajax post only sees first paramajax post 只看到第一个参数
【发布时间】:2026-02-16 22:15:01
【问题描述】:

这是我的 ajax 帖子:

$("#defaultMigration").click(function(){

    $.ajax({
        type: "POST",
        url: "/Svn2GitService/services/svn2git/defaultMigration",
        contentType: 'application/json',
        data: JSON.stringify({ svnUrl : $("#svnUrl").val(),
                               gitUrl : $("#gitUrl").val(),
                               username : $("#username").val(),
                               password : $("#password").val()
            }),
        dataType: 'text',
        success: function(response){
            alert("Success!" + response);
        },
        failure: function(response) {
            alert("Error! " + response);
        }
    });
});

当我在我的服务中执行System.out.println 时,我看到svnUrl 参数是唯一接收任何东西的参数。事实上,它正在接收上述所有值。即 svn url、git url、用户名和密码。

为什么会这样?

【问题讨论】:

  • 我认为你的问题是 URL 编码。如果$("#svnUrl").val()$("#gitUrl").val() 在其值中包含&,则发送到服务器的源将在& 符号处中断。

标签: jquery json ajax post


【解决方案1】:

出于好奇,请尝试以下操作。如果成功了,我会解释之后发生的事情。

我正在使用jQuery's $.param() 函数来序列化data 对象。

$.param()

创建数组、普通对象或 适合在 URL 查询字符串或 Ajax 请求中使用的 jQuery 对象。

var data = {
    svnUrl : $("#svnUrl").val(),
    gitUrl : $("#gitUrl").val(),
    username : $("#username").val(),
    password : $("#password").val()
}

data = $.param(data);

$.ajax({
    type: "POST",
    url: "/Svn2GitService/services/svn2git/defaultMigration",
    contentType: 'application/json',
    data: JSON.stringify(data),
    dataType: 'text',
    success: function(response){
        alert("Success!" + response);
    },
    failure: function(response) {
        alert("Error! " + response);
    }
});

【讨论】: