Impressum · Kontakt · Hilfe
Besucher online · Mitglieder



Portal > Foren > Ausschreibungssprachen und clientseitige Programmierung > JavaScript und AJAX > [Ajax / JS] Probleme mit der Rückgabe eines Array
Antwort
 
Themen-Optionen
Alt 29.11.2007, 07:02   Nach oben    #1
Erfahrener Benutzer
 
Benutzerbild von Chr!s
 
Registriert seit: 04.09.2005
Ort: Nürnberg
Beiträge: 561
Standard [Ajax / JS] Probleme mit der Rückgabe eines Array

Guten Morgen.
Ich bin derzeit dabei, eine bestehende JavaScript - Galerie mit einer Kommentarfunktion mittels AJAX -> PHP -> MySQL auszustatten. Wie das genau von statten gehen soll, ist mir bewusst, also die notwendigen Arbeitsschritte sind mir alle bekannt. Benutzt wird hierbei das Prototype Framework, was allerdings nichts zur Sache tut.

Ziel hierbei ist es grade, die vorhandenen Kommentare mittels AJAX / PHP / MySQL aus der Datenbank auszulesen und dann mittels JavaScript anzeigen zu lassen. Das PHP Script funktioniert einwandfrei.

Was ich genau hier habe, ist ein spezifisches JavaScript Problem. Die Photos möchte ich mir mittels AJAX holen:
Code:
var thePictures;
var photoArray = AjaxGetElements();
AjaxGetElements() sieht dann so aus:
Code:
function AjaxGetElements() {
    new Ajax.Request('/band/galerie/ajax.php?galleryID=1',
      {
        method:'get',
        onSuccess: function(transport){
          var response = transport.responseText || "no response text";
          eval(response);
          alert(thePictures);
          return thePictures;
      },

      onFailure: function(){ alert('Something went wrong...') }
      });
Die Response ist eine Anweisung zur Generierung eines Arrays (also var thePictures = new Array(...)).
An der Ausgabe von alert() bekomme ich alle Elemente des Arrays angezeigt.
Ist dies bereits ein Zeichen für ein Fehler? Arrays werden doch in JavaScript nicht mittels alert() als String ausgegeben, oder?

var photoArray = AjaxGetElements();

photoArray ist aber undefined, da ist dann nun gar nichts mehr drin. Eigentlich sollte da ja jetzt das Array drin sein, was in AjaxGetElements() generiert wurde.

Nun bin ich etwas ratlos. Wer kann mir hier helfen?
__________________
http://www.ChrisDiary.De
Chr!s ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 29.11.2007, 08:40   Nach oben    #2
Patrick Freitag
 
Registriert seit: 17.08.2005
Beiträge: 117
Standard

Zitat:
Zitat von Chr!s Beitrag anzeigen
Die Response ist eine Anweisung zur Generierung eines Arrays (also var thePictures = new Array(...)).
Kannst du mir den PHP-Teil auch noch reinposten, wo thePicture das Array zugewiesen wird bzw. wo das Array generiert wird, bitte?

Zitat:
Zitat von Chr!s Beitrag anzeigen
An der Ausgabe von alert() bekomme ich alle Elemente des Arrays angezeigt.
Ist dies bereits ein Zeichen für ein Fehler? Arrays werden doch in JavaScript nicht mittels alert() als String ausgegeben, oder?
Doch, wenn du in JS via alert() ein Array dumpst, bekommst du die Elemente aufgelistet.
Neq' ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 29.11.2007, 20:21   Nach oben    #3
Benutzer
 
Benutzerbild von bobby
 
Registriert seit: 09.03.2007
Ort: Nürnberg
Beiträge: 57
Standard

Hi Chris,

Du schickst hier einen 'asyncronen' Request ab, d.h. Javascript schickt die Anfrage ab, wartet aber nicht bis diese zu Ende ist.
Deshalb musst du 'asynchronous:false' (siehe http://prototypejs.org/api/ajax/options) setzen.

Code:
new Ajax.Request('/band/galerie/ajax.php', {
    asynchronous: false,
    method: 'get',
    parameters: {galleryID: 1}
    onSuccess: function(transport, json) {}
});
Json in Prototype: http://prototypejs.org/api/ajax/request (unten)

bobby.

P.S.: http://getfirebug.com/ installieren, falls noch nicht geschehen.
bobby ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 29.11.2007, 21:56   Nach oben    #4
Erfahrener Benutzer
 
Benutzerbild von Chr!s
 
Registriert seit: 04.09.2005
Ort: Nürnberg
Beiträge: 561
Standard

Zitat:
Zitat von bobby Beitrag anzeigen
Hi Chris,

Du schickst hier einen 'asyncronen' Request ab, d.h. Javascript schickt die Anfrage ab, wartet aber nicht bis diese zu Ende ist.
Deshalb musst du 'asynchronous:false' (siehe http://prototypejs.org/api/ajax/options) setzen.

Code:
new Ajax.Request('/band/galerie/ajax.php', {
    asynchronous: false,
    method: 'get',
    parameters: {galleryID: 1}
    onSuccess: function(transport, json) {}
});
Json in Prototype: http://prototypejs.org/api/ajax/request (unten)

bobby.

P.S.: http://getfirebug.com/ installieren, falls noch nicht geschehen.
Das wagt bei mir nicht zu funktionieren. Schalte ich asynchronous auf aus, funktioniert erstmal gar nichts mehr. Mein Problem ist ja auch nicht die Übertragung von PHP-Script zu JavaScript, sondern von JavaScript zu JavaScript - aus der Fukntion heraus.

Mit alert(thePictures); bekomme ich (durch evaulieren von "var thePictures = new Array..")) auch das Array gelistet. Aber es lässt sich nicht zurückgeben - und ich wollte fragen, wo hier mein Fehler ist.

(Der eval'te code wird geprüft und es gibts keine Möglichkeit, hier etwas böses zurückzuschicken).
__________________
http://www.ChrisDiary.De
Chr!s ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 30.11.2007, 09:06   Nach oben    #5
Patrick Freitag
 
Registriert seit: 17.08.2005
Beiträge: 117
Standard

Hi Chris,

probier' doch mal folgendes aus:
Code:
function AjaxGetElements() {
    var pictureResponse = new Ajax.Request('/band/galerie/ajax.php?galleryID=1',
      {
        method:'get',
        onSuccess: function(transport){
          var response = transport.responseText || "no response text";
          eval(response);
          alert(thePictures);
          return thePictures;
      },

      onFailure: function(){ alert('Something went wrong...') }
      }); // Ende von Ajax.Request
   return pictureResponse;
} // Ende von AjaxGetElements()
Neq' ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

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 are An
Pingbacks are An
Refbacks are Aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Suche Hilfe: Angebot und Nachfrage berechnen ljungi Plauderecke 6 17.12.2006 22:10
[PHP | XML] Probleme bei Konvertierung eines XML-Dokuments in ein Array Ben HTML, XML und CSS 13 15.06.2006 20:32
Array in Bezug auf ein anderes sortieren... code5 PHP-Programmierung 2 15.05.2006 15:56
Ein Array in ein Array schreiben bacarni PHP-Programmierung 2 07.02.2006 14:24


Alle Zeitangaben in WEZ +2. Es ist jetzt 22:21 Uhr.

Nach oben
Wir nutzen das Zend Framework, vBulletin (vBulletin v3.7.3, Copyright ©2000-2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0) und vBSEO.

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