PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : XMLHttpRequest(javascript) problem mit response



Roboman93
10.04.2010, 15:17
hallo,

ich habe einen avr-webserver, auf dem ethersex läuft. nachdem ich den zum laufen bekommen habe, möchte ich nun die seite für die portsteuerung programmieren. dafür benutze ich javascript. das schalten der ports funktioniert wunderbar, hier mal meine funktion, die argumente sind der pin und 1 für an und 0 für aus:


function request(pin,status) {
var request = new XMLHttpRequest();
request.open('get','http://192.168.2.120/ecmd?pin set '+pin+' '+status, true);
request.send(null);
Test.Ausgabe.value = request.responseText;
}


wie ihr seht will ich aber auch den response anzeigen. der webserver antwortet mit einem http-header (200 OK) und dem wort on oder off, also kein html oder xml. dieses wort möchte ich in der textbox Ausgabe in der form Test anzeigen. dazu soll die letzte codezeile dienen. allerdings kommt bei mir nichts heraus.
ich bin ganz neu bei javascript und habe mir die sachen nur für die seite angeguckt, vielleicht gibt es hier ja jemanden, der sich da besser auskennt und schon mit ethersex gearbeitet hat?

bin für jeden tipp dankbar!

mfg roboman

linux_80
11.04.2010, 21:00
Hi,

normalerweise geschieht der XMLHttpRequest-Aufruf doch asynchron, d.H. wenn man gleich nach dem Absenden sein Ergebnis abfrägt, wird da noch nix drin stehen.
Dazu gibt man vorher eine callback-function mit, die aufgerufen wird, wenn die Abfrage fertig ist.

siehe Beispiel ganz unten:
http://www.webmasterpro.de/coding/article/ajax-das-xmlhttprequest-objekt.html

Und, sind das da Leerzeichen ? Die sollte man vorher rausnehmen, oder durch ein '+' ersetzen, denn Leerezeichen gibts in der URL nicht, und ich weiss nicht (glaub nicht), ob die evtl. automatisch umgewandelt werden, in XMLHttpRequest.

HTH

Roboman93
12.04.2010, 23:33
ok, ich habe den code jetzt so geändert wie auf der website. er sieht jetzt so aus:


function request(pin,status) {
var request = new XMLHttpRequest();

request.open('get','http://192.168.2.120/ecmd?pin set+'+pin+'+'+status, true);
request.onreadystatechange = handleStateChange;
request.send(null);
Test.Ausgabe.value = request.responseText;
}

function handleStateChange()
{
alert("xmlHttpObject.readyState = " + xmlHttpObject.readyState + (xmlHttpObject.readyState >= 3 ? " HTTP-Status = " + xmlHttpObject.status : ''));
}


allerdings ändert das nicht, es erscheint auch keine meldung, wie es eigendlich sein sollte. ich habe auch das beispiel von der website probiert, da klappt es.

was mir aufgefallen ist: der response der beispielwebsite ist:


HTTP/1.1 200 OK

Date: Mon, 12 Apr 2010 22:20:37 GMT

Server: Apache

Vary: Cookie

Keep-Alive: timeout=2, max=58

Connection: Keep-Alive

Transfer-Encoding: chunked

Content-Type: text/html; charset=utf-8




der response meines webservers ist:


HTTP/1.1 200 OK

Connection: close

Cache-Control: no-cache, must-revalidate

Content-Type: text/plain; charset=utf-8



kann es sein, dass die funktion in meinem response was vermisst und deswegen nichts ausgibt?

mfg roboman