PHP, JS + AJAX Fehlersuche
Dimitri
- javascript
Hallo alle mit einander. Ich bin am verzweifeln und finde keine Lösung für diese Problem. Ich habe eine Tabelle in der Themen und punkte stehen, ähnlich eines Protokolls. Ich kann Punkte schon per AJAX einfügen. Nun ist mein problem das die Nummerierung der nachfolgenden punkte nicht mehr stimmt, daher dachte ich das ich eine funktion im php aufrufe die mir die Nummern sowie die id's zurückgibt, soweit funktioniert das auch.
ich bekomme einen string im format: pop1233-1.1#pop1323-1.2#pop23421....
also: id-nummer#id-nummer#....
den splite ich erst bei "#" in eine temp variable um dann mit each die weiteren schritte zu gehen. auch hier sind die variablen alle richtig gefüllt...
wenn ich nun (framework Prototype) mit $('id').update('punkt') die elemente ansprechen will, funktioniert das nicht. erst wenn ich id fest definiere geht es.Hier mal der Code:
function update_color_pos(ausgabe_punkt){
new Ajax.Request(
"functions.php",
{
method: "post",
onFailure: function(xml_http) {
$("pop1543").update("fehler")
},
onComplete: function(xml_http) {
//responstext trennen und update in schleife
//ausfuehren
var antwort = xml_http.responseText;
var tmp = antwort.split("#");
tmp.each(function(item) {
var punkt = item.split("-");
var text = punkt[1]; // position bspw. "1.2"
var referenz = punkt[0]; // ist die id bspw. "pop1234"
var referenz2 = "pop1543";// nur wenn ich es so mache geht es, auch wenn die werte richtig in den variablen drin stehen
$(referenz).update(text);
});
},
parameters: {
reference: ausgabe_punkt,
task2: "update_color_pos"
}
}
);
}
also der text sowie die referenz stimmen als wert, nur spricht er so die id nicht an.
Ich hoffe mal ihr könnt mir helfen danke!
Hi,
Ich kann Punkte schon per AJAX einfügen. Nun ist mein problem das die Nummerierung der nachfolgenden punkte nicht mehr stimmt,
Welche Nummerierung?
wenn ich nun (framework Prototype) mit $('id').update('punkt') die elemente ansprechen will, funktioniert das nicht. erst wenn ich id fest definiere geht es.
Dann finde heraus, wo welcher Unterschied zwischen den beiden Faellen besteht.
also der text sowie die referenz stimmen als wert, nur spricht er so die id nicht an.
Dann schau mit dem DOM-Inspector/FireBug nach, ob deine neu erzeugten Elemente auch korrekt erzeugt wurden - insb. natuerlich, was den Wert des ID-Attributes angeht.
Und kontrolliere auch, ob du als Funktionsparameter jeweils auch wirklich das uebergeben hast, was du "annimmst".
MfG ChrisB
Welche Nummerierung?
du musst dir das wie ein protokollvorstellen
1. thema
1.1 punkt 1 zu thema
1.2 punkt 2 zu thema
die nummerierung kommt aus dem php mit übergeben als der oben genannte string
id-nummer#id-nummer#....
Dann finde heraus, wo welcher Unterschied zwischen den beiden Faellen besteht.
den einzigen unterschied den ich sehe und finde ist dass das eine nen array ist.
Dann schau mit dem DOM-Inspector/FireBug nach, ob deine neu erzeugten Elemente auch korrekt erzeugt wurden - insb. natuerlich, was den Wert des ID-Attributes angeht.
sind genau die die auch vom php zurück kommen
da ich wenn ich die id's direkt ins JS schreibe sie ja auch ansprechen kann, dies geht nur nicht wenn die werte im Array stehen
muss man denn nen array to string machen?
auch mit dem normalen getelementbyid gehts nicht.
Und kontrolliere auch, ob du als Funktionsparameter jeweils auch wirklich das uebergeben hast, was du "annimmst".
ist überprüft durch nen alert mit der ensprechenden ausgabe
Mfg
Hi,
Dann finde heraus, wo welcher Unterschied zwischen den beiden Faellen besteht.
den einzigen unterschied den ich sehe und finde ist dass das eine nen array ist.
Ich meinte im DOM-Baum, den du erzeugst.
da ich wenn ich die id's direkt ins JS schreibe sie ja auch ansprechen kann, dies geht nur nicht wenn die werte im Array stehen
Was meinst du mit "direkt ins JS schreiben"?
Und kontrolliere auch, ob du als Funktionsparameter jeweils auch wirklich das uebergeben hast, was du "annimmst".
ist überprüft durch nen alert mit der ensprechenden ausgabe
Online-Beispiel?
MfG ChrisB
Hi,
Dann finde heraus, wo welcher Unterschied zwischen den beiden Faellen besteht.
den einzigen unterschied den ich sehe und finde ist dass das eine nen array ist.
Ich meinte im DOM-Baum, den du erzeugst.
es geht ja auch bei denen nicht die schon drin sind also vom php her.
ich kann bspw wenn ich die ausgabe id direkt schreib (siehe unten)
auf den ersten punkt zu greifen
wenn ich jetzt das selbe mache und die id aus dem array nehme geht es nicht
da ich wenn ich die id's direkt ins JS schreibe sie ja auch ansprechen kann, dies geht nur nicht wenn die werte im Array stehen
Was meinst du mit "direkt ins JS schreiben"?
»»
bspw:
var referenz2 = "pop1543";
Und kontrolliere auch, ob du als Funktionsparameter jeweils auch wirklich das uebergeben hast, was du "annimmst".
ist überprüft durch nen alert mit der ensprechenden ausgabe
Online-Beispiel?
habs leider net online :(
MfG ChrisB
Hi,
ich kann bspw wenn ich die ausgabe id direkt schreib (siehe unten)
auf den ersten punkt zu greifen
wenn ich jetzt das selbe mache und die id aus dem array nehme geht es nicht
Na dann wird sich da wohl noch ein Unterschied befinden - dann uebergibst du wohl doch nicht die *exakt* richtige ID an die Funktion.
MfG ChrisB
Hi,
ich kann bspw wenn ich die ausgabe id direkt schreib (siehe unten)
auf den ersten punkt zu greifen
wenn ich jetzt das selbe mache und die id aus dem array nehme geht es nichtNa dann wird sich da wohl noch ein Unterschied befinden - dann uebergibst du wohl doch nicht die *exakt* richtige ID an die Funktion.
MfG ChrisB
mir ist gerade beim alert aufgefallen das die erste id ca 2 zeilen weiter unten sitzt als alle anderen im alterfenster, da ne idee? oder ist das normal?
var antwort = xml_http.responseText;
var tmp = antwort.split("#");
tmp.each(function(item) {
// Your code working on item here...
var punkt = item.split("-");
var text = punkt[1];
var referenz = punkt[0];
var referenz2 = "pop1543";
alert(referenz);
//document.getElementById(referenz).update(referenz);
$(referenz2).update(referenz);
});
UPDATE:
Ich konnte einen Fehler aus machen.
Wenn ich den ersten Wert überspringe, werden alle anderen richtig dargestellt.
D.h. irgend was muss bei dem ersten noch mit übergeben werden, nur was?!
So sieht mein überspriungen aus:
var i =0;
tmp.each(function(item) {
// Your code working on item here...
if (i!=0){
var punkt = item.split("-");
var text = punkt[1];
var referenz = punkt[0];
var referenz2 = "pop1543";
alert(referenz);
//document.getElementById(referenz).update(referenz);
$(referenz).update(text);}
i++;
});
und so meine php:
$i=0;
$resultpunkt = sql_query("SELECT ppid, position from application_protokolle_protokollpunkte where projektid='$lastproject' and themaid='$themaid' order by position asc", $dbi);
while(list($ppid, $position) = sql_fetch_row($resultpunkt, $dbi))
{
if($i==0){
$content.="pop".$ppid."-".$position_thema.".".$position.".";
$i++;
}
else{
$content.="#pop".$ppid."-".$position_thema.".".$position.".";
}
}
MfG
Hi,
bitte zitiere vernuenftig!
mir ist gerade beim alert aufgefallen das die erste id ca 2 zeilen weiter unten sitzt als alle anderen im alterfenster, da ne idee? oder ist das normal?
Dann wirst du wohl irgendwo noch ueberfluessige Zeilenumbrueche drin haben.
MfG ChrisB