Hackerboard WikiHaboBlog

[HaBo]

 
(Web-) Design und webbasierte Sprachen Tipps & Tricks, Designabgleich, HTML & Javascript, Flash, ASP, PHP, Perl/CGI...

[Ajax] Formular und Post

Diskussion: [Ajax] Formular und Post im Forum (Web-) Design und webbasierte Sprachen, in der Kategorie Web, Network & Multimedia Palace; Hallo ! Ich habe hier ein Problem und komme irgendwie mit den Beschreibungen die ich gefunden habe nicht klar. Liegt ...

Antwort
Alt 12.03.10, 09:08   #1 (permalink)
 
Registriert seit: 19.08.04
Dawen Leistung: Addierstift
Likes: 1
Standard [Ajax] Formular und Post


Hallo !

Ich habe hier ein Problem und komme irgendwie mit den Beschreibungen die ich gefunden habe nicht klar. Liegt eventuell an der Uhrzeit.

Ich habe ein Formular (grob) :

HTML-Code:
<form name="support" method="post">
   <input type="text" name="name">
   <input type="text" name="mail"> 
   <a href="javascript:sentRequest('support.php')">Ticket erstellen</a>
</form>
Nun habe ich per Ajax folgendes erstellt

Code:
function sentRequest(url){
    if (window.XMLHttpRequest) {
        request = new XMLHttpRequest(); // Mozilla, Safari, Opera
    } else if (window.ActiveXObject) {
        try {
            request = new ActiveXObject('Msxml2.XMLHTTP'); // IE 5
        } catch (e) {
            try {
                request = new ActiveXObject('Microsoft.XMLHTTP'); // IE 6
            } catch (e) {}
        }
    }
    if (!request) {
        alert("Kann keine XMLHTTP-Instanz erzeugen");
        return false;
    } 
  else {
        request.open('POST', url, true);
        request.send(null);
        request.onreadystatechange = interpretRequest;
    }
}
So, in meiner support.php kommen in $_POST keine Daten an.Was mache ich falsch
Dawen ist offline   Mit Zitat antworten
Alt 12.03.10, 09:19   #2 (permalink)
Senior Member
 
Benutzerbild von odigo
 
Registriert seit: 25.12.04
odigo Leistung: 8086odigo Leistung: 8086
odigo eine Nachricht über ICQ schicken
Likes: 50
Standard

Nur Vermutungen:

Code:
request.send(null);
Wenn du nichts sendest kommt auch support.php nichts an, oder?

Was theoretisch auch sein könnte daß am Pfad zur support.php was nicht stimmt und deine Daten ins Nirvana geschickt werden.
odigo ist gerade online   Mit Zitat antworten
   
HaBOT
 

Werbung ist gerade online    
Alt 12.03.10, 09:39   #3 (permalink)
Themenstarter
 
Registriert seit: 19.08.04
Dawen Leistung: Addierstift
Likes: 1
Standard

Hi !

Pfad zur support.php passt.Die Daten werden in eine DB geschrieben.Einträge sind vorhanden nur die Daten aus dem Formular kommen nicht an. Hier sind die DB Felder leer.

Ich komme irgendwie gerade nicht weiter ...
Dawen ist offline   Mit Zitat antworten
Alt 12.03.10, 10:10   #4 (permalink)
 
Benutzerbild von BasicAvid
 
Registriert seit: 17.03.04
BasicAvid Leistung: Facit NTK
Likes: 1
Standard

Liest Du die Antworten? Wenn ja, dann sollte Dir aufgefallen sein, dass odigo Dich darauf hingewiesen hat, dass Du keine Daten an die send()-Methode übergibst. Wie soll den im Request was sein, wenn Du keine Daten sendest.
__________________
Mfg Basic Avid
- Use it or be used! -
BasicAvid ist offline   Mit Zitat antworten
Alt 12.03.10, 10:48   #5 (permalink)
Themenstarter
 
Registriert seit: 19.08.04
Dawen Leistung: Addierstift
Likes: 1
Standard

Hallo !

Natürlich lese ich die Antworten, ich suche/brauche ja Hilfe

Die Datei support.php ist korrekt. Ich habe diese mal mit $_GET aufgerufen und die Daten werden korrekt abgespeichert.

HTML-Code:
<form name="ticketSystem">
<input type="text" name="subject">
<input type="text" name="message">
<a href="javascript:sentRequest('support/ticket.php');">Ticket erstellen</a>
</form>
So sieht grob das HTML File aus.

Ich habe das JS mal bearbeitet :

HTML-Code:
function sentRequest(url){
  request = getAjaxReqObject();
    if (!request) {
        alert("Kann keine XMLHTTP-Instanz erzeugen");
        return false;
    } 
  else {
        request.open('GET', url, true);
        request.send("subject=subject&message=message");
    }
Ich habe mal im send die Parameter per Hand eingegeben.Die Daten werden aber nicht eingetragen in die DB.

Ich komme irgendwie nicht weiter.
Dawen ist offline   Mit Zitat antworten
Alt 12.03.10, 11:17   #6 (permalink)
 
Benutzerbild von BasicAvid
 
Registriert seit: 17.03.04
BasicAvid Leistung: Facit NTK
Likes: 1
Standard

Oh uh ah, mein Fehler. Ich hab schon sehr lange keinen Async-Request mit einem XMLHttpRequest-Object abgesetzt.

Du musst natürlich die Daten an deine URL hängen.

Code:
xmlHttp.open('GET', url?key=value&key2=value2, true);
xmlHttp.send(null);
xmlHttp.onreadystatechange = responseHandler;
Sorry, nochmal für den kleinen Fehler aber ich benutze nur noch prototype dafür.
__________________
Mfg Basic Avid
- Use it or be used! -
BasicAvid ist offline   Mit Zitat antworten
Alt 12.03.10, 11:45   #7 (permalink)
Themenstarter
 
Registriert seit: 19.08.04
Dawen Leistung: Addierstift
Likes: 1
Standard

WOW

Mit Prototype ist es echt total easy. Habe mir gerade den Code auf der Seite angeschaut und klappt ohne Probleme.

Eine Frage hätte ich noch :

HTML-Code:
<form id="create-support-ticket" method="POST" action="support/createTicket.php">
Die Daten landen nun einwandfrei in der DB.Jedoch sehe ich dann die createTicket.php Seite

Ich würde gerne wieder die support.php Seite anzeigen. Ich lade die per Ajax in ein div.Hierfür nutze ich die Funktion

HTML-Code:
load('support.php');
Ich habe es nun wie folgt versucht

HTML-Code:
$('create-support-ticket').request({
   onComplete: function(){
        load('support.php');
   }
})
Jedoch ohne Effekt ...
Dawen ist offline   Mit Zitat antworten
Alt 12.03.10, 11:54   #8 (permalink)
 
Benutzerbild von b4ck
 
Registriert seit: 13.02.06
b4ck Leistung: Z3
Likes: 1
Standard

load bei jquery (hier nachzulesen: http://api.jquery.com/load/)

sollte schon auf ein div aufgerufen werden also:

HTML-Code:
$('#deindiv').load('support.php');
b4ck ist offline   Mit Zitat antworten
Alt 12.03.10, 12:35   #9 (permalink)
Themenstarter
 
Registriert seit: 19.08.04
Dawen Leistung: Addierstift
Likes: 1
Standard

Hallo !

Load ist meine eigene Funktion.Ich habe mir die selber mit Ajax gebaut.

Muss es dann wie folgt lauten

HTML-Code:
<!-- Formular -->
$('create-support-ticket').request();
$('#supportContent').load('support/support.php');
Dawen ist offline   Mit Zitat antworten
Alt 12.03.10, 12:57   #10 (permalink)
 
Benutzerbild von BasicAvid
 
Registriert seit: 17.03.04
BasicAvid Leistung: Facit NTK
Likes: 1
Standard

Ich zeig Dir mal schnell wie ich solche Ajax-Requests mit Prototype abschicke.

HTML-Code:
<form onsubmit="return false;" action="deine_seite.php" method="post" id="deine_form_id">
<!--
Deine Input-Felder usw.
-->

<input type="submit" name="save" id="save" />
</form>

<script type="text/javascript" language="javascript">

$('save').observe('click', saveData);

    function saveData(event) {
        new Ajax.Request('deine_seite.php',
        {
            method: 'get',
            parameters: $('deine_form_id').serialize(),
            onSuccess: handleResponse
        });
    }

    function handleResponse(response) {
        if (!response.responseText.isJSON()) {
            $('updateErrors').innerHTML = "";
            $('updateErrors').innerHTML = "<p class='success'>"+response.responseText+"</p>";
            $('updateErrors').style.display = "block";
            return;
        }

        var data = response.responseText.evalJSON();

        var error = "<p class='error'>";

        if (typeof(data) == 'object') {
            for (var item in data) {
                error += data[item] + "<br />";
            }
        } else {
            for (var i = 0; i < data.length; i++) {
                error += data[i] + "<br />";
            }
        }
        error += "</p>";
        $('updateErrors').innerHTML = error;
        $('updateErrors').style.display = "block";
    }
</script>
Das schöne daran, Du musst nicht die ganzen Daten manuell angeben, sondern serialisierst das ganze mit $('deine_form_id').serialize(). Somit kannste Deine Form, ohne dass Du die JS-Funktionen erweitern musst, um weitere Felder erweitern.

Die handleResponse-Methode dient bei mir dazu, Meldungen über den Status auszugeben, das können Error-,Warning-& Success-Messages sein.

Serverseitig darfst Du natürlich nur das zurück geben was Du ausgeben willst.
__________________
Mfg Basic Avid
- Use it or be used! -
BasicAvid ist offline   Mit Zitat antworten
Alt 12.03.10, 13:29   #11 (permalink)
Themenstarter
 
Registriert seit: 19.08.04
Dawen Leistung: Addierstift
Likes: 1
Standard

Langsam ist es mir echt zu blöd

Wenn ich deinen Code nehme, passiert nichts.

Mit

HTML-Code:
$('create-support-ticket').request();
Klappt es, ich bin dann aber auf der ticket.php Seite.Einfach ein


HTML-Code:
$('create-support-ticket').request();
Und dann in dem div, wo sich das formular befindet was anderes hinein laden.

Bin kurz davor ein

PHP-Code:
header("location: support.php"
zu nehmen ...
Dawen ist offline   Mit Zitat antworten
Alt 12.03.10, 14:00   #12 (permalink)
 
Benutzerbild von BasicAvid
 
Registriert seit: 17.03.04
BasicAvid Leistung: Facit NTK
Likes: 1
Standard

Nur nicht verzweifeln.

Dein Code:

1) Ajax-Request wird abgeschickt?
2) Hast Du ein return; nach dem speichern der Daten drin?
3) Könntest Du mal ein bisschen mehr Code zeigen?

Mein Code:
1) Hast Du den Code angepasst, dass er für Dich passt?
2) Welche Fehlermeldung kommt? (Mal mit Firebug schauen)
3) Was macht er bei meinem Code nicht/wie weit kommt er?
__________________
Mfg Basic Avid
- Use it or be used! -
BasicAvid ist offline   Mit Zitat antworten
Antwort
   

Werbung ist gerade online    

[HaBo] » Web, Network & Multimedia Palace » (Web-) Design und webbasierte Sprachen » [Ajax] Formular und Post
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61