如何通过 AJAX 将值作为表单对象发送?

How to send values as form object via AJAX?

我们在通过 AJAX 作为字符串发送的 pw 字段中遇到特殊字符时遇到问题。

目前的情况是这样的:

function resetPW() {
    var username = encodeURIComponent($("#email").val());
    var password = encodeURIComponent($("#newpassword").val());

    $.ajax({
        url: "/setnewpassword",
        type: "post",
        data: "username=" + username + "&password=" + password,
    }).done(function (response) { 
        ... 
    });

之前有一些特殊字符(&)被空格代替了(这好像是编码固定的,以前没有),其他的好像是编码错误。最后,很多用户在登录时遇到问题。

我真的不知道在这里做什么。有人提到我应该通过“表单对象”发送数据——但我该如何在这里实现呢?我可以在网上找到关于这个主题的一些问题,但由于我在对象构建方面完全没有经验并且 AJAX 根本没有,所以我不能采纳那些对我的特殊问题的答复。如果这个问题对您来说是重复的,请原谅!

不要自己对数据进行编码。 jQuery 为您做到这一点。放吧。

function resetPW() {
    return $.post("/setnewpassword", {
        username: $("#email").val(),
        password: $("#newpassword").val()
    }).done(function (response) { 
        ... 
    });
}

如果这不起作用,那么您的服务器代码已损坏。

Some special characters (&) have been replaced by blanks before

不,也不要那样做。保留用户输入的所有内容。