SpringMVC JSON/AJAX

0

Witam

Uczę się powyższych technologii. Napisałem sobie RESTowy kontroler w springu zwracający dane w postaci JSON. Kontroler działa (sprawdzałem na Postmanie), zwraca JSONa w interesującym mnie formacie.
Napisałem sobie funkcję w javascripcie :

function madeAjaxCall() {
	$.ajax({
				type : "get",
				dataType : "json",
				contentType: "application/json; charset=utf-8",
				url : "http://localhost:8080/spiroWeb/workers/add",
				success : function(response) {
					var name = response.name;
                                        var surname = response.surname;
                                        alert(name);

				},
				error : function(jqXHR, textStatus, errorThrown) {
					alert(jqXHR.resultText);
				}
			});
}

Plik .js został poprawnie zaimportowany. Funkcja w kontrolerze jest wywoływana. Ale cały czas w alercie dostaję "undefined" bądź "NaN". Moje pytanie brzmi: Jak poprawnie odwołać się do danych zawartych w responsie? Oraz, co teraz robię źle:))??

PS: Poniżej zwracany JSON:

[
    {
        "idWorkers": 2,
        "address": {
            "idAddress": 1,
            "homeNo": "12",
            "flatNo": "12",
            "street": "asd",
            "city": "asd",
            "postcode": "123-123"
        },
        "name": "qw",
        "surname": "qw",
        "email": "[email protected]",
        "phone": 123123,
        "position": "asdasdas",
        "employmentType": "asdasdas",
        "pesel": 123123123,
        "desc": "asdasdasdasd"
    }
]
0

Ty tak poważnie? A odpal firebuga, wstaw breakpoint w funkcji success i zobacz pod debugerem jak wygląda zmienna response i co możesz z nia zrobić.

0
response: Array[1]
0: Object
    address: Object
    desc: "asdasdasdasd"
    email: "[email protected]"
    employmentType: "asdasdas"
    idWorkers: 2
    name: "qw"
    pesel: 123123123
    phone: 123123
    position: "asdasdas"
   surname: "qw"

Tak wygląda zmienna pod debugerem. Kiedy próbuje odwołać się przy pomocy "response.name" dostaje undefined.

1

Powiedz mi ze sobie żartujesz. Przecież jak byk masz napisane że response to TABLICA z 1 elementem. Toteż dopiero response[0] odwołuje ci sie do obiektu który cię interesuje. A zapewne response[0].name da ci to czego szukasz.

0

Oj oj ...:) dzięki za odpowiedz.

0

Mam jeszcze jedno pytanie. Co trzeba zrobić, aby przy wykonywaniu POSTa to restowego kontrolera mapować automatycznie JSONa na klase/encje javy?

0

Głowy nie dam sobie uciąć a nie mam pod ręką podobnego kodu, ale chyba wystarczy dać:

public void handleRequest(@RequestBody TwojaKlasa obiekt)

gdzie TwojaKlasa to jest zwykłe POJO. Przy czym taka operacja wymaga Jacksona w zależnościach.

0

Sprawdziłem twoją podpowiedź. Klasę do której chce załadować JSONa adnotowałem dodatkowo za pomocą @XmlRootElement, ale cały czas dostaje:

The request sent by the client was syntactically incorrect.

Bez adnotacji @XmlRootElement wyrzuca mi:

The server refused this request because the request entity is in a format not supported by the requested resource for the requested method

Zaimportowałem jacksona:

                 <dependency>
			<groupId>org.codehaus.jackson</groupId>
			<artifactId>jackson-mapper-asl</artifactId>
			<version>${jackson.version}</version>
		</dependency>

Klasa POJO zawiera dwa pola name oraz surname, konstruktor, setteru i gettery oraz jest serializowana. Oraz format JSONa jakiego wysyłam to:

[
    {
        "name": "qw",
        "surname": "qw",
    }
]

Ma ktoś może jeszcze jakiś pomysł gdzie popełniam błąd??

0

No dobra ale co leci w logach? Mamy wróżyć z kuli? Głowe daje że masz w konsoli stacktrace z jacksona który mówi co jest nie teges (a jak nie masz, to wlącz poziom logowania na debug).
Zastanawiam sie czy problem nie jest w tym twoim jsonie -> tzn czy to nie jest zapis tablicy jednelementowej czasem? Bo spring to nie jasnowidz i nie zrobi takiej turbo-konwersji żeby tablicę jednoelementową przerobić na jeden obiekt...

0

Jeżeli chodzi o format JSONa to wykorzystuje dane które pobrałem. Mam metodę która mi zwraca określonego JSONa i w postmanie wysyłam posta z tymi danymi, więc format powinien być ok. I mam pytanie jak uruchomić poziom logowania na debug??;))

1 użytkowników online, w tym zalogowanych: 0, gości: 1