Willkommen im #Neuland
Login wie bei quake.ingame.de zuvor, die Passwörter aus der alten Datenbank wurden aber gelöscht - einmal hier neu anfordern.
Wer seine E-Mail-Adresse nicht mehr hat oder kennt, bitte eine Nachricht mit Infos schicken o. im Discord melden.

PQ Discord Server: #planetquake                                                                                                                                         Spenden? Hier entlang!

servlet mit javascript aufrufen

Forum für alles rund ums Coden und web.design - HTML, XHTML, XML, CSS, PHP, ASP, Zugriffsrechten, Mods uvm.
Antworten
SanaK4n
Xaero
Xaero
Beiträge: 4356
Registriert: Dez 2005
Steam: mensarb

servlet mit javascript aufrufen

Beitrag von SanaK4n »

hoi das ist mein erstes thema im web forum. ich hoffe das thema wurde in letzter zeit nicht behandelt, hab keinen thread dazu gefunden.

ich will ein java servlet aus einer java script funktion aufruft.

meine script funktion sieht so aus:

Code: Alles auswählen

function toServlet()
{
	alert("alert1");
	var request = makeHttpObject();
	url = "localhost:8080/MusikDB/MusikServlet?submit=test";
	request.open("GET", url, false);
	request.send(null);
}

function makeHttpObject() {
	  try {return new XMLHttpRequest();}
	  catch (error) {}
	  try {return new ActiveXObject("Msxml2.XMLHTTP");}
	  catch (error) {}
	  try {return new ActiveXObject("Microsoft.XMLHTTP");}
	  catch (error) {}

	  throw new Error("Could not create HTTP request object.");
}
mein servlet so

Code: Alles auswählen

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doPost(request,response);
	}
	
	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		PrintWriter out = response.getWriter();
		response.setContentType("text/html");
		
		System.out.println("REQUEST");
		
		if(request.getParameter("submit").equals("test")){
			out.print("TEST");
		}
		
	}
in die script funktion geht er ohne probleme rein, nur der aufruf als url geht nicht.
ich hoffe es ist klar was ich meine ;)
vlcht weiß einer von euch wie das geht :wave:
Ich bin Jack's Signatur
[floatdiv="left"]Bild[/floatdiv][floatdiv="right"]Bild[/floatdiv]
Johanson
Sorlag
Sorlag
Beiträge: 3845
Registriert: Jul 2002
Kontaktdaten:

Beitrag von Johanson »

Hab zwar kein großen Plan von js, aber schonmal mal mit http://localhost oder http://127.0.0.1 versucht?
airbone
Perfect
Perfect
Beiträge: 9648
Registriert: Nov 2002
Wohnort: Egelsbach
Steam: mobson

Beitrag von airbone »

Pack doch auch mal eine Fehlerbehandlung in deine catch Blöcke und wenn es nur ein console.log ist, dann sollte recht schnell ersichtlich sein wo das Problem liegt.
SanaK4n
Xaero
Xaero
Beiträge: 4356
Registriert: Dez 2005
Steam: mensarb

Beitrag von SanaK4n »

laut der web konsole von firefox wird der request gesendet
[21:52:10.884] GET http://localhost:8080/MusikDB/MusikServlet?submit=test [HTTP/1.1 200 OK 1ms]
allerdings kommt nichts beim servlet an? oder es passiert nichts.

tippe ich die url direkt im browser ein funktioniert es :ugly:
also die gewünschte ausgabe "TEST"
Ich bin Jack's Signatur
[floatdiv="left"]Bild[/floatdiv][floatdiv="right"]Bild[/floatdiv]
Whitey Weiszmann
Wrack
Wrack
Beiträge: 488
Registriert: Nov 2000

Beitrag von Whitey Weiszmann »

Wenn im Servlet Container Log "REQUEST" steht, wurde der HTTP GET erfolgreich beantwortet.

Kann es sein, dass du die Response nicht verarbeitest?

Häng' mal folgendes ans Ende deiner toServlet():

Code: Alles auswählen

if (request.readyState == 4) {
    if (request.status == 200) {
        var response = request.responseText;
        alert(response);
    }
} else {
    alert('There was a problem retrieving the data: \n' + request.statusText);
}
Die Antwort eines XMLHttpRequests wird direkt in JavaScript verabeitet. Erst dadurch hast du die Möglichkeit Serverdaten "nachträglich" zu laden ohne die komplette Seite zu aktualisieren.
Bild
SanaK4n
Xaero
Xaero
Beiträge: 4356
Registriert: Dez 2005
Steam: mensarb

Beitrag von SanaK4n »

das servlet gibt eben nicht auf der konsole aus.
wenn ich die url einfach als adresse im browser eingebe, gibt es einen eintrag in der konsole ("REQUEST").

ich probier deinen vorschlag mal aus wenn ich wieder zuhause bin :)
Ich bin Jack's Signatur
[floatdiv="left"]Bild[/floatdiv][floatdiv="right"]Bild[/floatdiv]
SanaK4n
Xaero
Xaero
Beiträge: 4356
Registriert: Dez 2005
Steam: mensarb

Beitrag von SanaK4n »

Waldeinsamkeit hat geschrieben:Wenn im Servlet Container Log "REQUEST" steht, wurde der HTTP GET erfolgreich beantwortet.

Kann es sein, dass du die Response nicht verarbeitest?

Häng' mal folgendes ans Ende deiner toServlet():

Code: Alles auswählen

if (request.readyState == 4) {
    if (request.status == 200) {
        var response = request.responseText;
        alert(response);
    }
} else {
    alert('There was a problem retrieving the data: \n' + request.statusText);
}
Die Antwort eines XMLHttpRequests wird direkt in JavaScript verabeitet. Erst dadurch hast du die Möglichkeit Serverdaten "nachträglich" zu laden ohne die komplette Seite zu aktualisieren.
bin jetzt dazu gekommen das auszuprobieren. anscheinend wird alles
korrekt verarbeitet. ich hab mir den ablauf wohl falsch vorgestellt :ugly:

ich wollte über einen java script aufruf über die url parameter an das
servlet schicken, diese dann weiter behandeln (z.b. in eine datenbank
schreiben) und dann vom servlet aus weiter verlinken (z.b auf index.html).
aber wenn ich den response weiter in java script bearbeiten muss, muss ich
das wohl anders angehen.
Ich bin Jack's Signatur
[floatdiv="left"]Bild[/floatdiv][floatdiv="right"]Bild[/floatdiv]
Antworten