我想使用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
这是关于什么的?
答案 0 :(得分:0)
这里有几个问题。首先从URL末尾删除?
。如果需要,jQuery会自动添加它。
其次,不要在您设置为data
的对象中提供函数。直接给出价值。此外,result
将是一个字符串,因此您与布尔值的比较将无法按预期工作。为了在测试时安全,最好直接记录响应。试试这个:
$.ajax({
type: 'PUT',
url: '/changeEmail?',
data: {
email: $('#email').val();
},
success: function(result) {
console.log(result);
}
});
最后,如果您的请求被从/changeEmail
重定向到/signIn
,则听起来您需要对请求进行身份验证。究竟如何做到这一点因API而异,所以我建议您查看他们的文档。