Erledigt | [Firefox Toolbar] XMLHttpRequest-Probleme

Hi Community!
Ich bin grad dabei, eine Firefox-Toolbar zu scripten. Dafür will ich Daten vom Server abrufen und auch welche senden.
Hab mir dazu eine PHP gescriptet. Das abrufen funktioniert auch, aber das Senden der Daten will nicht so recht. Edit: Erledigt!!! Das PHP-Script am Server war schuld. Hab dort statt $_POST - $_GET gehabt :) Die anderen Fragen gelten immer noch +gg+
Ausserdem will ich eine Variable in die Request-Funktion übergeben. Das Problem hab ich direkt im Code kommentiert!
Weiters will ich die Daten aus der Request-Funktion zurückgeben.

Also wenn ich die Funktion mit
Code:
var loginerror = doRequest('loginerror');
aufrufe, soll der erhaltene Wert in die Variable loginerror gespeichert werden.

Aber jetzt zum Request-Script:
Code:
var http_request = false;
 
function doRequest(whichdata) {
 
        http_request = false;

        var url = 'http://www.next4u.de/toolbar/data.php';
        var entered_user = next4uTB_ReadUser();
        var entered_pass = next4uTB_ReadPass();
 
        if (window.XMLHttpRequest) { // Mozilla, Safari,...
            http_request = new XMLHttpRequest();
            if (http_request.overrideMimeType) {
                http_request.overrideMimeType('text/xml');
            }
        } else if (window.ActiveXObject) { // IE
            try {
                http_request = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) {
                try {
                    http_request = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) {}
            }
        }
 		               
        if (!http_request) {
            alert('Ende :( Kann keine XMLHTTP-Instanz erzeugen');
            return false;
        }
        http_request.onreadystatechange = getContent(whichdata); // Will ich hier die Variable übergeben, kommt der readyState-Wert nicht über 0 hinaus, d.h. er kann keine Verbindung aufbauen
        http_request.open('POST', url, true);
        http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
        http_request.send('user='+ entered_user +'&pw='+ entered_pass +'&whichdata='+ whichdata); // Diese Werte werden nicht an den Server gesendet bzw. der Server empfängt sie nicht.
}
 
function getContent(whichdata) {
        if (http_request.readyState == 4) {
        	var xmldoc = http_request.responseXML;
            var root_node = xmldoc.getElementsByTagName(whichdata).item(0);
            var answer = root_node.firstChild.data;
            alert(answer); // dieser Wert soll dann abschließend in der loginerror-Variablen stehen, die sich in einer anderen Funktion befindet
		}
}

Ich hoffe, mir kann jmd dabei helfen.
Aja, und danke schon mal für Antworten ;)

mfg, Bogi

EDIT:
So, es hat sich jetzt ALLES erledigt :) Irgendwie hat mir die Nacht gut getan.

1. Die Daten werden nun Empfangen und verarbeitet. Schuld war ein blöder Fehler von mir (was sonst :rolleyes:)

Ich hab soeben entdeckt, dass ich am Server $_GET statt $_POST hatte. Ich hab das nun geändert und es funktioniert auch.

2. Anstatt mit return zu arbeiten, rufe ich einfach die Funktion mit der Rückgabe als Parameter auf:
also: next4uTB_CheckLogin(answer);

3. In der Problem-Funktion wird ja nur überprüft, dass auch der richtige-Tagname geholt wird. Ich setze einfach in der PHP jede Rückgabe in z.b. <return>-Tags, also muss ich in der betroffenen Funktion keine Variable reinschreiben!! Die Abfrage, welche Daten geholt werden sollen, managen ja schon die POST-Variablen :)

Edit Nr. 2:
Ich war wohl ein wenig voreilig!
Punkt 2 hat sich doch nicht erledigt. So, wie ich das beschrieben hätte, kann ich ja lediglich in eine Funktion zurückgeben bzw in diesem Fall übergeben.
Ich will es ja eigentlich mit "var xyz = doRequest('xyz');" machen.

Also bitte weiterhin um Hilfe :rolleyes:

mfg
 
Vielleicht hilft Dir diese Variante

function blablubb(&$myarray) {
$x = $myarray
while (machmit$xwasduwillst)....
$myarray = $x
}

Dann brauchst du nicht mit $a = blablubb($b) schaffen sondern kannst sie einfach aufrufen.
 
Ähm, es geht hier um javascript/ajax und nicht PHP ;)

Aber es hat sich mittlerweile schon erledigt.

Auf Grund des asynchronen Vorgangs, kann nicht mit return zurückgegeben werden, sondern es kann nur innerhalb der getContent-Funktion eine Funktion aufgerufen werden und an die übergeben werden.

So hab ich es auch jetzt gelöst ;)
 
Zurück
Oben