首页 > 解决方案 > 如何通过 AJAX 将值作为表单对象发送?

问题描述

我们遇到了来自 pw 字段的特殊字符通过 AJAX 作为字符串发送的问题。

目前的情况是这样的:

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 方面完全没有经验,所以我不能采用这些对我的特殊问题的答复。所以如果这个问题对你来说是重复的,请原谅!

标签: jsonajaxobjectajaxform

解决方案


不要自己编码数据。jQuery 会为您做到这一点。让它。

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

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

一些特殊字符 (&) 之前已被空格替换

不,也不要那样做。完全按照用户输入的方式保留所有内容。


推荐阅读