No po prostu no nie mogę. Od 4 dni męczę się z wysłaniem danych ajaxem inną metodą niż GET i nie daję rady. Tworzę projekt w Spring Boot. Mam stworzony kontroler z mapowanym adresem
@PutMapping(value = "/changeEmail")
public boolean changeEmail(
@RequestBody ChangeEmailDTO changeEmailDTO
) {
System.out.println("email: " + changeEmailDTO.getEmail());
return true;
}
Ten kontroler ma przyjąć adres e-mail wysłany przez ajaxa
function changeEmail() {
console.log("Event");
$.ajax({
type: 'PUT',
url: '/changeEmail',
data: {
email: $('#email').val()
},
success: function (result) {
console.log('function');
}
});
}
Jednak jedyny efekt jest taki, że w konsoli wywala mi
PUT http://localhost:8080/signIn net::ERR_TOO_MANY_REDIRECTS
send @ jquery-3.2.1.min.js:4
ajax @ jquery-3.2.1.min.js:4
changeEmail @ settings.js:58
submitHandler @ settings.js:52
d @ jquery.validate.min.js:4
(anonymous) @ jquery.validate.min.js:4
dispatch @ jquery-3.2.1.min.js:3
q.handle @ jquery-3.2.1.min.js:3
DTO posiada tylko jedno pole
public class ChangeEmailDTO {
@IsValidEmail
@ExistsEmail(ifExistsReturn = false)
@Getter @Setter private String email;
}
Po próbie wysłania danych przez ajaxa przerzuca mnie na kontroler błędu
@Controller
public class PageNotFoundController implements ErrorController{
@RequestMapping("/error")
public ModelAndView showPageError() {
return new ModelAndView("redirect:/signIn");
}
@Override
public String getErrorPath() {
return "/error";
}
}
Screen z narzędzia przeglądarki co wysyłane i odbierane: https://zapodaj.net/f1b8ed0b2a16b.png.html
Jak wspomniałem, kontroler poprawnie potrafi odebrać z ajaxa tylko zapytanie GET. Przy każdym innym przerzuca na kontroler błędu.
Dodatkowo wspomną, że jeśli chciałbym wysłać dane bezpośrednio z formy, to wtedy nie ma problemu z żadnym zapytanie.
Co ten ajax odwala, to ja nie wiem.