Ich habe einen AJAX, der einen POST zu einem Servlet macht. Servlet führt eine Berechnung durch und gibt eine Antwort zurück. AJAX-Erfolgsfunktion liest die Antwort und macht bestimmte Dinge.AJAX empfängt keine Antwort vom Servlet
Ajax-Aufruf
$.ajax({
type: "POST",
url: "/bin/path/to/Servlet",
data: $(this).serialize(),
dataType: "html",
success: function(responseValue) {
if(responseValue == '200') {
// Do something
}else {
console.log("it is not 200");
}
},
error: trialForm.trialError
}).done(function(status) {
$(trialForm.submitButton).show();
$(trialForm.loader).hide();
});
}
SERVLET
protected void doPost(SlingHttpServletRequest request, SlingHttpServletResponse response) {
response.setContentType("text/html");
URL url = new URL("www.apriurl.com");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type","application/json");
conn.setRequestProperty("Authorization","XXXXZZZZ " + strSig);
conn.setRequestProperty("Accept","application/json");
conn.setRequestProperty("ZZZZZ",clientID);
OutputStream os = conn.getOutputStream();
os.write(inputParameters.getBytes());
os.flush();
System.out.println(conn.getResponseCode());
response.getWriter().write(conn.getResponseCode());
}
- response ist eine Variable in teh Java-Klasse verwendet.
- Es hat den richtigen Wert. Ich sehe den Wert, der in Protokolldatei gedruckt wird, nachdem Sysout ausgeführt wurde
- Die Antwort ist nur ein verstümmeltes Fragezeichen (?). Ich habe die Konsole angemeldet. Ich vermute es muss etwas mit dem Datentyp machen. Ich habe ein paar andere Typen ausprobiert, konnte es aber nicht herausfinden. Jede Hilfe ist gut.
Sie Frage ist nicht sehr klar. Zu Beginn scheint es nicht, dass Sie 'Antwort'-Wert zu Ihrer 'Antwort' im Servlet hinzufügen, und es scheint auch nicht, dass Sie abrufen und verwenden 'ResponseValue' in Ihrem JS –
Sorry, ich habe versucht, unnötige zu entfernen Code von der Post. Klar, ich habe es nicht gut gemacht. Im Grunde interagiert Servelt mit einer 3rd-Party-API, und was auch immer es von diesem dritten Teil bekommt, es geht auf AJAX über. Ich antworte ich von 3rd Party ist in Ordnung, ich kann es protokollieren, aber nicht in der Lage, es an AJAX weiterzugeben – user3861559
Ja, ich versuchte 'response.getWriter(). Write (" test ");' Statt der Ajax Callback Funktion erhält den Wert anstelle von verstümmeltem Text. – user3861559