AJAX: Formular im hintergrund senden?
lima-city → Forum → Die eigene Homepage → HTML, CSS & Javascript
agent
anhang
bar url
beispielsweise code
beschreibung
break
code
datei
datum
form
funktion
http
parameter
post
richtig feine implementierung
schwer code
standard
url
verschicken
welt
-
Hallo LC,
Ich brauche einen AJAX Script der ein Formular im Hintergrund an eine php Datei sendet. diese PHP Datei speichert das ganze dann in eine MYSQL DB. Mein Problem liegt beim Ajax XD ich bin seit Wochen am Googlen und habe nichts anständiges gefunden. Hat zufällig wer was passendes für mich? *Blinzel*
LG
Chrissi
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Möglichkeit a) Benutze ein Framework. Beispielsweise habe ich damals mit Prototype angefangen.
Möglichkeit b) Ein einfacher Ajax-Request ist ja nun nicht so schwer.
(Ungetestet)<script type="text/javascript"> <!-- function AJAXsend(data, url){ var req = null; try{req = new XMLHttpRequest();} catch (ms){ try{req = new ActiveXObject("Msxml2.XMLHTTP");} catch (nonms){ try{req = new ActiveXObject("Microsoft.XMLHTTP");} catch (failed){req = null;} } } if (req == null) alert("Error creating request object!"); req.open("POST", url, true); req.onreadystatechange = function(){ switch(req.readyState) { case 4: if(req.status!=200) { alert("Fehler:"+req.status); }else{ alert(req.responseText); document.getElementById('eins').innerHTML = '<strong>'+ req.responseText+'</strong>'; } break; default: return false; break; } }; req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); req.send(data); } //--> </script>
Nur noch die zu sendenden POST-Daten in data, beispielsweise
und das sollte funktionieren.AJAXsend("foo=bar", "example.org/foobar.php");
Anhang:
Ajax-Tutorial - einfach mal durcharbeiten.
Prototype-Framework - mit vielen Beschreibungen. -
wenn du bei quirksmode in den Quelltext guckst, findet sich eine richtig feine Implementierung, ich hab sie mal etwas abgewandelt, damit es leichter zu verdauen ist!
Aufrufen kannst du das ganze dann so, du definierst eine Variable, welche den request beinhalten soll:/* * Ajax, ganz easy und schöner codeaufbau, trotzdem umfangreich */ ajax = (function(){ var ajaxFactories = function(){ return [ function(){return new XMLHttpRequest();}, function(){return new ActiveXObject("Msxml2.XMLHTTP");}, function(){return new ActiveXObject("Msxml3.XMLHTTP");}, function(){return new ActiveXObject("Microsoft.XMLHTTP");} ]; }, ajax = function(p){ p = p || {}; this.url = p.url || window.location; this.method = p.method || 'GET'; this.callback = p.callback || function(){}; this.data = p.data; var xmlhttp = false, factories = ajaxFactories(), i=0, l=factories.length; for(;i<l;i++){ try{ xmlhttp = factories[i](); }catch(e){ continue; } break; } this.xmlhttp = xmlhttp; }; ajax.prototype = { send: function(p){ if(p) for(var i in p) if(p.hasOwnProperty(i)) this[i]=p[i]; var post = this.method.toUpperCase() != 'GET' ? this.data : false, req = this.xmlhttp, callback = this.callback; if(!post) this.url += '?'+this.data; req.open(this.method,this.url,true); req.setRequestHeader('User-Agent','XMLHTTP/1.0'); if(post) req.setRequestHeader('Content-type','application/x-www-form-urlencoded'); req.onreadystatechange = function(){ if(req.readyState != 4)return; callback(req); }; if(req.readyState == 4)return; req.send(post); } } return ajax; })()
Danach kannst du so viele request mit an verschicken wie du willst, und auch noch die Parameter verändern, wie du willst:var request=new ajax({data:"foo=bar",url:"example.org/foobar.php"});
wie gesagt relativ einfach, sehr übersichtlicher code und sehr umfangreich, wenn man es denn haben will!request.send(); request.send({data:"xyz=abc"}); request.send({method:"GET"}); // statt dem Standard POST var zeigeAlert = function(){alert('Hallo Welt')}; // eine Funktion, als Beispiel request.send({callback:zeigeAlert}); // die Funktion ausführen, wenn der request abgeschlossen ist
Beitrag zuletzt geändert: 15.5.2010 1:36:27 von nemoinho -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage