2016-04-12 19 views
-1

Ich versuche, ein JSON-Objekt mit AJAX an ein Servlet zu senden. Das Objekt soll geändert und zurück an den Client gesendet werden. Dies ist der Code, den ich verwendet habe, um das Json-Objekt vom Client zum Server zu senden. Funktion sendJson (jsonObj)Senden eines JSON-Objekts mithilfe von AJAX an ein Servlet und Empfangen eines Antwort-JSON-Objekts

{ 
    var parsed = JSON.parse(jsonObj); 
    $.ajax({ 
     type: 'get', 
     url: 'GameLogic', 
     dataType: 'JSON', 
     data: { 
      loadProds: 1, 
      parsed: JSON.stringify(parsed) 
     }, 
     success: function(data) { 

     }, 
     error: function(data) { 
     alert('fail'); 
      } 
    }); 
} 

Ich habe nur Grundkenntnisse in Javascript. Wie ich verstehe, sendet dieser Code nur ein JSON-Objekt an ein Servlet. Wie erhalte ich die Antwort vom Servlet? Ich suchte danach und fand ähnliche Funktionen wie oben, um eine Antwort zu erhalten. Ich verstehe nicht, was das success: function(data) Teil tut. Kann mir jemand den Weg erklären, ein JSON-Objekt zu senden und die Antwort von und zu einem Servlet zu erhalten. Wenn ich ein JSON-Objekt an das Servlet sende, kann ich auf irgendeine Weise wissen, ob es vom Servlet empfangen wird, außer das Objekt als Antwort zurückzusenden.

+0

Ist diese Antwort alle Ihre Fragen WRT Servlets + Ajax? http://StackOverflow.com/Q/4112686 Angesichts der aktuellen Art und Weise, wie Sie $ .AJAX verwenden, scheint Ihnen ein grundlegendes Verständnis zu fehlen. – BalusC

Antwort

1

Ver einfach, die Antwort ist bereits in Ihrem Code. Die Ajax-Methode von jQuery muss Callback-Methoden für Erfolg und Fehler aufrufen. Beide sind bereits impl. in deinem Beispiel aber tu nichts !!

Hier Ihr Code mit Kommentaren, die auf den Rückruf impl.

Impl. etwas im Erfolgsrückruf und debugge es mit deinen Browserentwicklungswerkzeugen, um zu sehen, was innerhalb "Daten" ist.

Wie Sie Ihre Frage geändert haben, mehr über die allgemeine Kommunikation und wie Sie wissen, ob Ihre Anfrage eingegangen ist. Hier mein normaler Ansatz.

Zuerst definiere ich eine Envenlope für jede Anfrage und Antwort die immer gleich ist. Es kann so aussehen:

{ 
    status: OK | ERROR, 
    message: "possible error message etc." 
    data: JSON Object representing the payload. 
} 

Danach kann ich impl. eine generische Logik zum Senden und Empfangen von Nachrichten zwischen Server und Client und jeder Seite, wie man mit der Hülle umgehen soll. Um sicherzustellen, dass eine Nachricht empfangen wird, verarbeitet werden konnte usw.

Dann haben Sie diese:

  1. einen Ajax-Aufruf Machen Sie auf Ihren Server. 2a. Bei einem topologischen Problem wird Ihr Fehlerrückruf auf der Client-Seite aufgerufen. Anfrage fehlgeschlagen, Server nicht erreichbar! 2b. Die Nachricht wurde vom Server empfangen. Der Server kann jetzt die Payload in Bezug auf die URL verarbeiten, die zum Aufrufen des Servers verwendet wird. Die Servermethode ist erfolgreich, es wird ein OK in den Umschlag schreiben und sein mögliches Ergebnis in "Daten" als Nutzlast. Wenn die Methode fehlschlägt, setzt sie "status" auf "ERROR" und liefert eine korrekte Nachricht, die Daten sind leer.
  2. Der Client erhält Daten über den Erfolgsrückruf und kann das Feld "Status" interpretieren, wenn es sich um eine sinnvolle Antwort handelt oder wenn es sich um einen Fehler handelt.

Hoffnung, die

0

Der success:function() Teil geht so

Eine Funktion, die aufgerufen werden, hilft, wenn die Anforderung erfolgreich ist.Die Funktion ruft drei Argumente übergeben:

  1. Die Daten vom Server zurückgegeben, formatiert gemäß dem datatype Parameter oder der dataFilter Callback-Funktion, spezifiziert, wenn

  2. ein String Beschreibung des Status

  3. das Objekt jqXHR (jQuery-XHR)

Was dies bedeutet, ist - wenn Ihre Ajax-Anforderung erfolgreich war, wird der Server Sie einige Antwort zurück, das heißt, die Daten. Diese "Daten" können in der Funktion verwendet werden.


$.ajax({ 
    ... 
    success: function(data) { 
     // process the "data" variable 
     console.log("SERVER RESPONSE"); 
     console.log(data); 
    } 
}); 
Verwandte Themen