【问题标题】:Ajax does not want to send me a PUT queryAjax 不想向我发送 PUT 查询
【发布时间】:2017-07-22 19:30:31
【问题描述】:

我想向控制器发送用户使用 ajax 提供的新电子邮件

$.ajax({
        type: 'PUT',
        url: '/changeEmail?',
        data: {
            email: function() {
                return $('#email').val();
            }
        },
        success: function(result) {
            console.log('function');
            if(result === true) {
                console.log("true");
            } else {
                console.log("false");
            }
        }
    });

到控制器(示例代码)

@PutMapping("/changeEmail")
public boolean changeEmail(
        @RequestParam("email") String email
) {
    System.out.println("email: " + email);

    return true;
}

但是,在调度时,浏览器控制台会将我抛出

jquery-3.2.1.min.js:4 PUT http://localhost:8080/signIn net::ERR_TOO_MANY_REDIRECTS

Ajax 试图将数据发送到与我在 ajax 中提供的地址完全不同的地址。 在 Ajax 我给了

/changeEmail

他正试图让我继续前进

/signIn

这是关于什么的?

【问题讨论】:

  • 打开开发者工具网络标签,看看发生了什么。

标签: javascript java jquery ajax spring


【解决方案1】:

这里有几个问题。首先从 URL 的末尾删除 ?。如果需要,jQuery 会自动添加它。

其次,不要在您设置为data 的对象中提供函数。直接给值。此外,result 将是一个字符串,因此您与布尔值的比较不会像您预期的那样工作。为了测试时的安全,最好直接记录响应。试试这个:

$.ajax({
  type: 'PUT',
  url: '/changeEmail?',
  data: { 
    email: $('#email').val();
  },
  success: function(result) {
    console.log(result);
  }
});

最后,如果您的请求从/changeEmail 重定向到/signIn,那么听起来您需要对请求进行身份验证。具体操作方式因一种 API 不同而异,因此我建议您查看他们的文档。

【讨论】:

    猜你喜欢
    • 2010-11-14
    • 2016-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-07
    • 1970-01-01
    • 2011-06-13
    • 1970-01-01
    相关资源
    最近更新 更多