Willkommen Gast. Bitte anmelden oder registrieren.

Autor Thema: Ajax in Joomla  (Gelesen 4334 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

shral

  • Unter Beobachtung
  • Beiträge: 6
Ajax in Joomla
« am: 07. Mai 2012, 04:58:57 »
Hallo erstmal,
Ich habe ein Problem mit ajax in joomla und zwar, wenn ich ein PHP-Funktion mit Ajax aufrufe, der dan auf MySql-Datenbank zugreifft, bekomme ich als Request noch zwei MySql Warnungen, damit werden die JSON-Daten nicht von jQuery erkannt(obwohl dass es mitgesendet werden) und damit als fehlerhaft interpretiert.
Ich bedanke mich im Voraus.

Die Zwei Warnungen:
Warning: mysqli_fetch_object() expects parameter 1 to be mysqli_result, boolean given in joomla2.5\libraries\joomla\database\database\mysqli.php on line 498

Warning: mysqli_free_result() expects parameter 1 to be mysqli_result, boolean given in joomla2.5\libraries\joomla\database\database\mysqli.php on line 512

bembelimen

  • moderatives Dielektrikum
  • Beiträge: 227
  • Ich kam, sah und zensierte...
    • Joomla! Vereinsverwaltung
Antw: Ajax in Joomla
« Antwort #1 am: 07. Mai 2012, 07:19:27 »
Hallo,

die Frage ist, wie du genau das ganze Ajax Gedöns aufrufst also auf welchen Link zu gehst. JQuery ist aktuell in Joomla! noch eine schlechte Wahl, da mit Joomla! schon Mootools mitgeliefert wird, was genau das selbe macht wie JQuery (also auch den AJAX-Aufruf durchführen kann).

Der AJAX-Request sollte dann auf einen Link, der in etwa so aussieht erfolgen: index.php?option=com_deinekomponente&view=deinview&format=json und in deiner Komponente von einer view.json.php verarbeitet werden.

So viel zu den Grundlagen. Um die Quelle deines Fehlers zu finden, kannst du in Joomla! den Debugmodus aktivieren (in der globalen Konfiguration), dann bekommst du eine aussagekräftigere Fehlermeldung. Und am besten wäre es, wenn du hier mal dein Vorgehen/Code posten würdest.
Joomla! ist auch nur ein Mensch...

shral

  • Unter Beobachtung
  • Beiträge: 6
Antw: Ajax in Joomla
« Antwort #2 am: 07. Mai 2012, 16:32:48 »
Hallo,
ich bedanke mich für die schnelle antwort.
Zitat
JQuery ist aktuell in Joomla! noch eine schlechte Wahl, da mit Joomla! schon Mootools mitgeliefert wird, was genau das selbe macht wie JQuery (also auch den AJAX-Aufruf durchführen kann)

Es ist mir bewusst, dass Mootols genau das Selbe wie jQuery kann, aber ich habe mich irgendwie an jQuery geöhnt. Ich benutze zbsp
jQuery.noConflict(); und es gab bisher keine Konflikte.

Zitat
die Frage ist, wie du genau das ganze Ajax Gedöns aufrufst also auf welchen Link zu gehst

Ich rufe Ajax fast genau, als ob man ein Formular zuschicken würde und zwar mit diese Url:
...index.php?option=com_nameDerKomp&controller=nameDesControllers&task=NameDerFunktionInModels&tmpl=ajaxwobei ich eine Datei mit dem Namen "ajax.php" in "joomla2.5\administrator\templates\system" erstellt habe ide folgendes enthält:
<?php defined'_JEXEC' ) or die( 'Restricted access' );
?>

<jdoc:include type="component" />

Zitat
Um die Quelle deines Fehlers zu finden, kannst du in Joomla! den Debugmodus aktivieren ...
Das hilft mir leider gar nicht, ich  bekomme keine Fehler-Meldung.


Ich habe glaube ich eine "Lösung" gefunden und zwar indem ich in der Funktion, den ich aufrufe, error_reporting(E_ERROR); schreibe, damit werden nur die wirklichen Errors angzeigt aber ich weiss nicht in wie weit das so machen sollte.
Zitat
Der AJAX-Request sollte dann auf einen Link, der in etwa so aussieht erfolgen: index.php?option=com_deinekomponente&view=deinview&format=json und in deiner Komponente von einer view.json.php verarbeitet werden.
Kennst du vielleicht ein Tutorial die das genauer beschreibt, wie soll view.json.php genauer aussehen, wie rufe ich eine bestimmte funktion mit diese Methode.
Liebe Grüße

bembelimen

  • moderatives Dielektrikum
  • Beiträge: 227
  • Ich kam, sah und zensierte...
    • Joomla! Vereinsverwaltung
Antw: Ajax in Joomla
« Antwort #3 am: 07. Mai 2012, 21:47:23 »
Eine view.json.php funktioniert exakt wie eine view.html.php, außer dass Joomla! kein Template mit ausgibt. Das heißt im Endeffekt kannst du mit diesem Format genauso Models abfragen und eine View-Ausgabe generieren, nur dass am Ende ein JSON rauskommt.

Der Vorteil von Mootools in Joomla! (gegenüber JQuery) ist, dass man keine extra Javascriptbibliothek laden muss und dadurch massig an Ladezeit spart.
Joomla! ist auch nur ein Mensch...

shral

  • Unter Beobachtung
  • Beiträge: 6
Antw: Ajax in Joomla
« Antwort #4 am: 08. Mai 2012, 03:25:57 »
Hallo,
hat supper geklappt! ;D
Danke nochmal.
LG

Joomla-Hilfe

  • Oberwetterfrosch (Mod)
  • Beiträge: 155
Antw: Ajax in Joomla
« Antwort #5 am: 08. Mai 2012, 05:08:54 »
Wenn dir eine Antwort geholfen hat, darfst und sollst du diese Antwort als "hilfreich" markieren, damit spätere Leser schnell erkennen können, welcher Beitrag zur Lösung eines Problems beigetragen hat. Es soll also keine Form des Danks sein, sondern eine Orientierungshilfe.

So darfst du übrigens auch Antworten auf Fragen markieren, die du gar nicht selbst gestellt hast, die dir aber trotzdem bei der Lösung eines Problems geholfen haben.

Danke ;)
Dietmar

Die Realität ist eine Halluzination, die durch akuten Alkoholmangel hervorgerufen wird.

elkuku

  • Joomla! Junkie
  • Beiträge: 3
Antw: Ajax in Joomla
« Antwort #6 am: 11. Mai 2012, 18:02:18 »
Was ich auch recht hilfreich finde ist einen output buffer aufzumachen, etwaige Fehlermeldungen dort aufzufangen und den Inhalt des Buffers dann der Response hinzufügen.

<?php
ob_start
();

// Hier kommt der code der Fehler erzeugen "könnte"...

$debug ob_get_clean();

$response->debug $debug

echo json_encode($response);

shral

  • Unter Beobachtung
  • Beiträge: 6
Antw: Ajax in Joomla
« Antwort #7 am: 16. Mai 2012, 03:07:06 »
Hallo,
finde ich besser als ich es vorher mit error_reporting(E_ERROR); hatte.
Danke!

Sammy

  • Bestätigter Nutzer
  • Beiträge: 165
Antw: Ajax in Joomla
« Antwort #8 am: 16. Mai 2012, 08:35:38 »
Was ich auch recht hilfreich finde ist einen output buffer aufzumachen, etwaige Fehlermeldungen dort aufzufangen und den Inhalt des Buffers dann der Response hinzufügen.

<?php
ob_start
();

// Hier kommt der code der Fehler erzeugen "könnte"...

$debug ob_get_clean();

$response->debug $debug

echo json_encode($response);

Nicht, dass ich es wirklich gaschafft hätte, wieder tiefer in die Entwicklung einzusteigen, mir fehlt da jetzt die Erfahrung, trotzdem frage ich mich jetzt, warum man dafür nicht die Joomla-Bordmittel benutzt, das hatte ich bei Euch Profis eigentlich erwartet. Oder sind die Joomla-Mechanismen zu oversized / kompliziert / für echtes Debugging nicht geeignet?

Ich meine das hier:
http://developer.joomla.org/platform-manual.html Kapitel 2.5 (http://developer.joomla.org/manual/chap-Joomla_Platform_Manual-Log.html)

bembelimen

  • moderatives Dielektrikum
  • Beiträge: 227
  • Ich kam, sah und zensierte...
    • Joomla! Vereinsverwaltung
Antw: Ajax in Joomla
« Antwort #9 am: 16. Mai 2012, 13:01:59 »
Es geht ja nicht darum Fehler zu loggen sondern Debugmeldungen zu bekommen ohne dass das JSON ungültig wird. Das JLog Konstrukt funktioniert nebenbei bemerkt nicht, wenn man auf den FTP-Layer angewiesen ist.
Joomla! ist auch nur ein Mensch...

Sammy

  • Bestätigter Nutzer
  • Beiträge: 165
Antw: Ajax in Joomla
« Antwort #10 am: 16. Mai 2012, 14:17:38 »
OK. Thx