Hi, ich bin Schüler und arbeite derzeit an einem Projekt für einen realen Kunden. Teil des Auftrages ist ein Backoffice Bereich, welchen ich im großen und ganzen schon in php und html realisiert habe. Nun strebe ich eine ajax lösung an. Zu meiner freude komme ich schnell voran doch nun stehe ich vor einem Problem, welches ich auch nach vielem Googlen,Codeschnipsel ausprobieren nicht lösen kann.
Nun zu meinem Problem:
Zurzeit generiere ich mithilfe einer übergeordneten PhP Funktion Seiten(beschrenken sich auf einfache Tabellen und Formulare). Diese hole ich mir mit Ajax und schreibe den Inhalt einfach in ein div. Alle möglichen Übergaben laufen bei mir über die URL, da es ein Backoffice Bereich ist und der Kunde damit kein Problem hat nicht weiter Tragisch. Nun gibt es aber Formulare, welche eine zu große Menge an Daten übertragen, dass ich sie nicht mit der URL übergeben kann. Des weiteren wll ich verhindern, dass Datenbankeintäge mittels URL aufruf erstellt werden können.
in meiner index.html, in der alles geladen wird (tabellen, formulare, usw) rufe ich einfach zu beginn die funktion startCheck auf, welche mir die Seite mit hilfe der daten in der url aufbaut
ich unterscheide zwischen zwei ajax aufrufen post/get (ich verwende einen post request wenn ich in der url &sup finde)
global.js
Alles anzeigen
in meiner Funktion habe ich momentan einige debug zeilen (gekennzeichnet)
Zeile(110) alert("in superior") wird wie gewünscht ausgeführt
Zeile(111) alert(Form.serialize("Form")) nicht -> ich erwarte einen string als rückgabewert
ids wie Form und incontent sind überprüft
ich hoffe das gepostete reicht für eine ausreichende analyse, bei bedarf poste ich gerne auch weitere code details
edit: viele versuche später habe das problem auf folgende codezeile eingegrenzt:
parameters: Form.serialize("Form"),
kann mir bitte jemand sagen wo hierbei mein denkfehler liegt habe diese zeile schon anderswo verwendet
Nun zu meinem Problem:
Zurzeit generiere ich mithilfe einer übergeordneten PhP Funktion Seiten(beschrenken sich auf einfache Tabellen und Formulare). Diese hole ich mir mit Ajax und schreibe den Inhalt einfach in ein div. Alle möglichen Übergaben laufen bei mir über die URL, da es ein Backoffice Bereich ist und der Kunde damit kein Problem hat nicht weiter Tragisch. Nun gibt es aber Formulare, welche eine zu große Menge an Daten übertragen, dass ich sie nicht mit der URL übergeben kann. Des weiteren wll ich verhindern, dass Datenbankeintäge mittels URL aufruf erstellt werden können.
in meiner index.html, in der alles geladen wird (tabellen, formulare, usw) rufe ich einfach zu beginn die funktion startCheck auf, welche mir die Seite mit hilfe der daten in der url aufbaut
ich unterscheide zwischen zwei ajax aufrufen post/get (ich verwende einen post request wenn ich in der url &sup finde)
global.js
Quellcode
- function startCheck()
- {
- var url_menue = "../new/menuelinks.php"
- if(document.URL.indexOf("test")!==-1)
- {
- new Ajax.Updater("incontent","../new/test.php",{
- method: "post",
- parameter:"name=text"
- })
- }
- else
- {
- if(document.URL.indexOf("?")!==-1){
- var location = false
- var menue = false
- var uebergabe = false
- var superior = false
- var parameters=document.URL.split("?").last().split("&")
- parameters.each(function(parameter)
- {
- if(!parameter.startsWith("http"))
- {
- var para = parameter.split("=")
- switch (para.first())
- {
- case "loc":
- if(para.last().indexOf(",")===-1)
- {
- location = para.last()
- }
- else
- {
- if(para.last().split(",").last()=="")
- {
- location = para.last().split(",").last()
- }
- else
- {
- location = para.last().split(",").first()+"/"+para.last().split(",").last()
- }
- }
- break
- case "men":
- if(para.last().indexOf(",")===-1)
- {
- menue = "menue="+para.last()
- }
- else
- {
- if(para.last().split(",").last()=="")
- {
- menue = "menue="+para.last().split(",").first()
- }
- else
- {
- menue = "menue="+para.last().split(",").first()+"&pfad="+para.last().split(",").last()
- }
- }
- break
- case "ueb":
- if(para.last().indexOf(",")===-1)
- {
- uebergabe = "id="+para.last()
- }
- else
- {
- if(para.last().split(",").last()=="")
- {
- uebergabe = "id="+para.last().split(",").first()
- }
- else
- {
- uebergabe = "id="+para.last().split(",").first()+"&table="+para.last().split(",").last()
- }
- }
- break
- case "sup":
- superior = true
- break
- }
- }
- })
- if(location)
- {
- if(location.indexOf("/")===-1)
- {
- var url = "../"+location+"/"+location+".php"
- }
- else
- {
- var url = "../"+location+".php"
- }
- if(uebergabe)
- {
- url+="?"+uebergabe
- }
- }
- if(url)
- {
- if(superior===true)
- {
- //DEBUG->
- alert("in superior")
- alert(Form.serialize("Form"))
- //<-DEBUG
- new Ajax.Updater("incontent",url,{
- method: 'post',
- parameters: Form.serialize("Form"),
- //DEBUG->
- onFailure: function(){alert("Fehler")},
- onLoading: function(){alert("loading")},
- onSuccess: function(){alert("geschafft")}
- //<-DEBUG
- })
- }
- else
- {
- new Ajax.Updater("incontent", url, {
- method: 'get'
- })
- }
- }
- else{alert("Kritischer Fehler! Bitte kontaktieren Sie Mich =)")}
- if(menue){url_menue+="?"+menue}
- }
- if (url_menue){
- new Ajax.Updater("menuelinks",url_menue,{
- method: 'get'
- })}else{
- alert("Kritischer Fehler! Bitte kontaktieren Sie Mich =)")}
- }}
in meiner Funktion habe ich momentan einige debug zeilen (gekennzeichnet)
Zeile(110) alert("in superior") wird wie gewünscht ausgeführt
Zeile(111) alert(Form.serialize("Form")) nicht -> ich erwarte einen string als rückgabewert
ids wie Form und incontent sind überprüft
ich hoffe das gepostete reicht für eine ausreichende analyse, bei bedarf poste ich gerne auch weitere code details
edit: viele versuche später habe das problem auf folgende codezeile eingegrenzt:
parameters: Form.serialize("Form"),
kann mir bitte jemand sagen wo hierbei mein denkfehler liegt habe diese zeile schon anderswo verwendet
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von OliverBuchmann ()