XHTMLforum

XHTMLforum (http://xhtmlforum.de/index.php)
-   Javascript & Ajax (http://xhtmlforum.de/forumdisplay.php?f=83)
-   -   Ajax Request Handler (http://xhtmlforum.de/showthread.php?t=41310)

insanic! 14.08.2006 09:02

Ajax Request Handler
 
Hi,

ich setzte folgende 2 Funktionen zum AUfbau einer Verbindung bzw zum Senden von Daten ein:

Code:

function getXMLRequester( )
{
        var xmlHttp = false;
                 
        // try to create a new instance of the xmlhttprequest object     
        try
        {
                // Internet Explorer
                if( window.ActiveXObject )
                {
                        for( var i = 5; i; i-- )
                        {
                                try
                                {
                                        // loading of a newer version of msxml dll (msxml3 - msxml5) failed
                                        // use fallback solution
                                        // old style msxml version independent, deprecated
                                        if( i == 2 )
                                        {
                                                xmlHttp = new ActiveXObject( "Microsoft.XMLHTTP" ); 
                                        }
                                        // try to use the latest msxml dll
                                        else
                                        {
                                         
                                                xmlHttp = new ActiveXObject( "Msxml2.XMLHTTP." + i + ".0" );
                                        }
                                        break;
                                }
                                catch( excNotLoadable )
                                {                     
                                        xmlHttp = false;
                                }
                        }
                }
                // Mozilla, Opera und Safari
                else if( window.XMLHttpRequest )
                {
                        xmlHttp = new XMLHttpRequest();
                }
        }
        // loading of xmlhttp object failed
        catch( excNotLoadable )
        {
                xmlHttp = false;
        }
        return xmlHttp ;
}

function sendData(data, file) {
        con = getXMLRequester();
    con.open('POST', file, true);
    param = document.getElementById(data).name + '=' + document.getElementById(data).value;
    con.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    con.setRequestHeader("Content-length", param.length);
        con.onreadystatechange = handleResponse;
        con.send(param);
    return false;
}

Nun gibt es natürlich Probleme, wenn data ein Formularfeld ist, das ein Array darstellt.

Gibt es vielleicht eine Funktion sendData() (bzw kennt Ihr eine), die einfach alle Daten eines Formulars an eine Datei file über die Methode method (POST / GET) schickt?

ALso praktisch so, wie als würde man auf den Submit Button klicken!!

Danke!!

RoToRa 14.08.2006 13:12

Äh, wenn du ein Formular verschicken willst, warum tust Du das nicht einfach, statt mit AJAX rum zu machen?

Robin

insanic! 14.08.2006 13:20

Äh, weil ich den Reqeust mittels Ajax machen will. Weil ich auch keine neue Seite dazu laden möchte etc.
Aber es ist mir einfach zu umständlich, nur einzelne Felder per Ajax an eine bestimmte Datei zu senden, deswegen wäre es schön, wenn ich einfach alle Formulardaten an die Datei schicken könnte.
Welche Daten diese Datei dann braucht, is ja sh!t egal, aber hauptsache ich muss mich nicht mehr darum kümmern, dass ich alle von der requesteten Datei gebrauchten Formulardaten auch wirklich an diese verschicke!!

RoToRa 14.08.2006 17:27

Zitat:

Zitat von insanic!
Äh, weil ich den Reqeust mittels Ajax machen will.

Das ist natürlich ein überzeugender Grund...

Zitat:

Weil ich auch keine neue Seite dazu laden möchte etc.
Brauchst du auch nicht. Und dafür ist auch kein AJAX nötig. Informiere Dch mal über den HTTP-Status-Code 204 (http://tools.ietf.org/html/rfc2616#page-60). Oder benutze die billige Methode: Poste in ein verstecktes IFrame.

Zitat:

Aber es ist mir einfach zu umständlich, nur einzelne Felder per Ajax an eine bestimmte Datei zu senden, deswegen wäre es schön, wenn ich einfach alle Formulardaten an die Datei schicken könnte.
Ebend. Dafür gibt es Formulare, also benutze sie auch.

Robin

insanic! 14.08.2006 18:46

Wenn ich das ganze aber über Ajax machen möchte? Angenommen ich schreibe ein GB auf Ajax basis, dann muss doch eh der Name, die Homepage, die Mail adresse und die Nachricht gesendet werden. Wie mache ich das nun? Es kann nicht sein, dass ich 5 mal sendData() aufrufen muss. Eigentlich sollten dazu alle Formulardaten an ein Script geschickt werden. Also ...

nick 16.08.2006 11:40

...hab mich geirrt...

nick 17.08.2006 10:02

Verdammt, kann ihm nicht irgendjemand sagen wie es geht
anstatt ihm einzureden, dass er es nicht braucht?
Mich würde es nämlich auch dringend interessieren, bitte!

insanic! 17.08.2006 10:04

Jo, dieses Einreden "du brauchst das nicht", oder "das macht _MAN_ nicht" hass ich auch^^
edit: ...denn würd ichs net brauchen, würde ich net fragen ;)

duessu 17.08.2006 16:11

Wenn du ein PHP skript hast, welches dein formular abfängt kannst du ja einen ganz "normalen" AJAX Request machen mit den Werten in der URL:

senden.php?name=blubber&email=test@test.de

Das PHP bekommt seinen aufruf und du hast die Daten in der DB (oder sonst irgendwo)

Nebenbei, Aus eigenen Tests geht das AJAX-Post zeugs nur eingeschränkt. Jedenfalls habe ich es bei 2 Hoster versucht, bei welchen es nicht geklappt hat.

Aber die Frage wegen dem Warum du das so machst ist immer noch auf dem Tisch. Denn wenn du schon AJAX nutzt kannst du ja gleich bei jedem Feld ein "sendData" machen und Schritt für Schritt das Zeug in die DB schreiben oder eine Meldung ausgeben ob der Wert valid ist.

insanic! 18.08.2006 10:42

Aber wenn ich ne Datei so aufrufe mit Get Parametern, wie du es beschrieben hast, dann kann diese Datei keine Sachen an mein aktuelles Script zurückgeben ...


Alle Zeitangaben in WEZ +2. Es ist jetzt 02:32 Uhr.

Powered by vBulletin® Version 3.8.11 (Deutsch)
Copyright ©2000 - 2024, vBulletin Solutions, Inc.

© Dirk H. 2003 - 2023