Ajax不想向我发送PUT查询

时间:2017-07-22 19:30:32

标签: javascript java jquery ajax spring

我想使用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中提供的地址完全不同的地址。 在阿贾克斯,我给了

/changeEmail

他正试着发送给我

/signIn

这是关于什么的?

1 个答案:

答案 0 :(得分:0)

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

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

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

最后,如果您的请求被从/changeEmail重定向到/signIn,则听起来您需要对请求进行身份验证。究竟如何做到这一点因API而异,所以我建议您查看他们的文档。