• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Prototype AJAX & JSON

aazmitia

New member
Hallo Alle,

hier bin ich mit einem neuen Problem gestoßen, und zwar, dass ich verschiedene Daten (Users Status und Position) aus einer DB auslesen will.
Dazu habe ich ein PHP Datei gemacht, die die entsprechende Queries ausführt und der von Prototype's AJAX aufgerufen wird.
Die Ergebnisse will ich jetzt in meiner HTML Seite anzeigen und die Möglichkeit haben auf die Daten zugreifen zu können. Also habe ich mich für JSON entschieden:
PHP:
var User = Class.create();
User.prototype = {
  initialize: function(name, status, xpos, ypos) {
	this.name = name;
	this.status = status;
	this.xpos = xpos;
	this.ypos = ypos;
  },  
  toJSON: function() {
	return (this.name + ' (' + this.status + ')    x = ' + this.xpos + '    y = ' + this.ypos).toJSON();
  }
};

jetzt will ich für jede Zeile, die im DB gefunden wurde, einen neuen User erzeugen:

PHP:
echo "<script>
var user[$i] = new User('$name', '$status', '$xpos', '$ypos');
Object.toJSON(user[$i]);
</script>";

und danach auf meinen HTML Seite durch eine Funktion, die nach die Erstellung der Daten aufgerufen wird, auf die verschiedene Elemente zugreifen.

PHP:
alert(user[0].name)

Leider wird hier nichts angezeigt.

Weiß jemand woran kann dies liegen?
Kann Prototypes Ajax <script> tags als "response" geben?

Was mache ich hier falsch?
Beispiele?

Ich bedanke mich.
 
Wenn nichts angezeigt wird, also kein alert Fenster erscheint, ist ein Fehler aufgetreten, wie lautet die Fehlermeldung?

Kurioserweise zeigt Firebug mir nichts an. Deswegen denke ich, dass im AJAX werden die <script> tags nicht erkannt, da die "response" einfach ein string ist...

ich hab auch folgendes probiert:

PHP:
new Ajax.PeriodicalUpdater('online', 'users.php', {
	  method: 'get', frequency: 10, decay: 1.25,
	  parameters: {aq: 'online'},
	  onSuccess: function(transport){
      var response = transport.responseText || "no response text";
      alert("Success! \n\n" + response); //wird angezeigt
	  alert(users[0].name) //wird nicht angezeigt
	  alert('Is working!'); //wird nicht angezeigt
    }
});

und nur die erste "alert" wird angezeigt, also das Problem tritt bei aufrufen der users[0].name. Hier wird er nicht erkannt, wegen (meiner Meinung nach) der response als String übergeben wird und nicht als ein Script.
 
Dann sag doch mal die Fehlermeldung in der Fehlerkonsole

wie gesagt, Firebug zeigt mir keine Fehler.


Ich vermute du kennst die Doku zu prototype?
Ja. Ich habe vorher vergessen die "evalScripts:true" an die Ajax abfrage dran zu machen, aber JSON Objekte werden noch nicht in der Main Seite angezeigt.

Wenn ich die Objekte von der PHP Seite aufrufe, werden doch angezeigt.

PHP:
echo "users[$i] = \"{'name': '$row[0]', 'status': '$row[1]'}\".evalJSON();\n";
echo "alert(users[$i].name);\n";
 
Du musst natürlich die JSON Ob jekte auch als Javascript an dein Skript senden, wenn ich das richtig verstehe mit dem richtigen Mime Typ, so lese ich zumindest die Doku.
 
Zurück
Oben