• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Ajax nie potrafi wysłać zapytania innego niż GET

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
0 głosów
138 wizyt
pytanie zadane 25 lipca 2017 w Java przez Jonki Dyskutant (8,180 p.)

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.

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
0 odpowiedzi 153 wizyt
pytanie zadane 23 lipca 2017 w JavaScript przez Jonki Dyskutant (8,180 p.)
0 głosów
0 odpowiedzi 384 wizyt
pytanie zadane 22 lipca 2017 w JavaScript przez Jonki Dyskutant (8,180 p.)
0 głosów
1 odpowiedź 647 wizyt
pytanie zadane 30 marca 2018 w Java przez miro Pasjonat (23,870 p.)

93,443 zapytań

142,434 odpowiedzi

322,691 komentarzy

62,805 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

...