php.de

Zurück   php.de > Webentwicklung > JavaScript, Ajax und mehr

JavaScript, Ajax und mehr dynamisches Scripten und Interaktion auf Clientebene

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 21.03.2011, 17:50  
Erfahrener Benutzer
 
Registriert seit: 15.04.2004
Beiträge: 126
pcschröda
Standard JSON als Metadaten eines HTML Gerüsts

Hallo,

Folgender Gedanke:

eine jQuery.post() AJAX-Abfrage liefert als Anwort ein HTML-Gerüst, welches dann am entsprechenden Ort des DOM's eingebunden wird.

Ich komme nun aber immer wieder in die Situation, dass ich zum HTML-Gerüst quasi "Meta-Daten" mitliefern muss, z.B. für ein Popupfenster, oder einen Timer, der nur auf einer bestimmten Seite aktiviert werden soll.

Bisher löse ich das mit <span>-Elementen, die eine entsprechende Klasse ( = key) sowie id ( = value) mit auf den Weg bekommen. Sicher ist das okay so, nur hoffe ich, dass es eine "sauberere" Lösung per JSON geben kann.

- Müsste ich dazu das HTML in ein JSON-Objekt packen? Dies würde auch serverseitig einen gewissen Aufwand bedeuten. Hat jemand schonmal sowas gelöst?


Beste Grüße,

pcschröda
pcschröda ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 21.03.2011, 17:58  
Erfahrener Benutzer
 
Registriert seit: 30.07.2008
Beiträge: 1.167
PHP-Kenntnisse:
Fortgeschritten
xm22 sorgt für eine eindrucksvolle Atmosphärexm22 sorgt für eine eindrucksvolle Atmosphärexm22 sorgt für eine eindrucksvolle Atmosphäre
Standard

Ich bin dazu übergegangen, JSON-Responses vom Serber grundsätzlich in diesem Format zurück zugeben zu lassen:
Code:
{
    "status":0|1|2
    "content": object|string|number|...
    "error": null|array
}
In content kann dann im Prinzip alles an Nutzinformation rein (Z. B. eben auch HTML). Status ist 0 (Fehler), 1 (Erfolgreich), 2 (Info). Error ist gefüllt, wenn halt status 0 oder 2 ist. Mit PHP und json_encode geht das ziemlich problemlos und ich habe in meinen Applikationen ein genormtes JSON-Format.
xm22 ist offline   Mit Zitat antworten
Alt 21.03.2011, 17:59  
fab
Erfahrener Benutzer
 
Benutzerbild von fab
 
Registriert seit: 28.07.2010
Beiträge: 2.308
PHP-Kenntnisse:
Fortgeschritten
fab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblick
Standard

Zitat:
Zitat von pcschröda Beitrag anzeigen
Müsste ich dazu das HTML in ein JSON-Objekt packen? Dies würde auch serverseitig einen gewissen Aufwand bedeuten. Hat jemand schonmal sowas gelöst?
Ja, nichts leichter als das. Was für einen Aufwand scheust du denn da?

PHP-Code:
json_encode(array(
  
'html' => $html,
  
'popup' => 'whatever',
//...
)); 
fab ist offline   Mit Zitat antworten
Alt 21.03.2011, 18:04  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.266
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Hallo,

Metadaten sind immer gut, brauchst du auch fast immer. Beim Fehler das Ding nämlich irgendwo einhängen ist doof!

Facebook machts übrigens genauso: HTML direkt ins JSON als String. Scheint also nicht unbedingt unperformant zu sein (das JSON-encode und client-seitige decode).
__________________
"Nuschel ich?" - "Was?"
Chriz ist offline   Mit Zitat antworten
Alt 21.03.2011, 18:20  
Erfahrener Benutzer
 
Registriert seit: 15.04.2004
Beiträge: 126
pcschröda
Standard

Okay, sehr interessant & danke für die Antworten. Zuletzt, als ich HTML per json_encode auf die Reise geschickt habe, hat das Probleme ergeben; nicht wohlgeformtes JSON. Werde das also nochmals versuchen.

Das letzte Problem, dass sich mir jetzt noch stellt:

Die AJAX Abfrage erhält als Antwort Teile einer Webseite. Kopf- und Fussbereich werden beispielsweise nicht mit zurückgegeben, andere Bereich je nach Kontext. Konkret geht es hier um eine WordPress Seite, mit angepassten get_header() und get_footer() Funktionen.

Um nun das HTML als JSON Objekt zurückzuliefern, müsste ich die Ausgabe des HTML auf serverseite quasi puffern. Ich denke da an ob_start().

Was sagen die Spezialisten zu dieser Herangehensweise?


Beste Grüße,

pcschröda

Geändert von pcschröda (21.03.2011 um 18:24 Uhr).
pcschröda ist offline   Mit Zitat antworten
Alt 21.03.2011, 18:42  
fab
Erfahrener Benutzer
 
Benutzerbild von fab
 
Registriert seit: 28.07.2010
Beiträge: 2.308
PHP-Kenntnisse:
Fortgeschritten
fab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblick
Standard

Kann man durchaus so machen, wenn keine Möglichkeit besteht, das HTML abzugreifen bevor es überhaupt ausgegeben wird. Bei Wordpress ist das also vermutlich das Mittel der Wahl, da kenne ich mich aber auch nicht genug aus um dir Alternativen aufzuzeigen.
fab ist offline   Mit Zitat antworten
Alt 21.03.2011, 18:59  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.266
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von pcschröda Beitrag anzeigen
Okay, sehr interessant & danke für die Antworten. Zuletzt, als ich HTML per json_encode auf die Reise geschickt habe, hat das Probleme ergeben; nicht wohlgeformtes JSON. Werde das also nochmals versuchen.
Das wundert mich, mit json_encode() und jQueries $.parseJSON hatte ich bisher keine Probleme. Darfst halt nicht versuchen das JSON selbst zusammenzubauen.
__________________
"Nuschel ich?" - "Was?"
Chriz ist offline   Mit Zitat antworten
Alt 21.03.2011, 19:34  
Erfahrener Benutzer
 
Registriert seit: 15.04.2004
Beiträge: 126
pcschröda
Standard

Zitat:
Zitat von Chriz Beitrag anzeigen
Das wundert mich, mit json_encode() und jQueries $.parseJSON hatte ich bisher keine Probleme. Darfst halt nicht versuchen das JSON selbst zusammenzubauen.
Das Problem waren Steuerzeichen wie \n und \r. Erst nachdem ich sie per preg_replace entfernt hatte, wurde das JSON Objekt akzeptiert.


Beste Grüße,

pcschröda
pcschröda ist offline   Mit Zitat antworten
Alt 21.03.2011, 23:34  
Erfahrener Benutzer
 
Registriert seit: 28.05.2008
Beiträge: 2.094
PHP-Kenntnisse:
Fortgeschritten
rudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nett
Standard

Ich würde dir wie xm22 auch zu einem festen Ausgabeschema raten.
Bei mir schaut die Response vom Schema her nur deswegen anders aus, da ich beliebig zwischen jQuery und ExtJS tauschen können will.
Sprich a la
PHP-Code:
response = {
    
success true/false,
    
data : [],
    
// message, error

Um Metadaten zu transportieren kannst du dir zusätzlich noch $.data anschauen. Zum rendern ist das offizlelle template plugin auf jeden Fall einen Blick wert - ist aber noch nicht stable - also mit Vorsicht genießen

grüße


Basti
__________________
++++ Wieder einer ins Netz gegangen: Phishers Fritz zufrieden ++++
Blog
rudygotya ist offline   Mit Zitat antworten
Alt 21.03.2011, 23:43  
Erfahrener Benutzer
 
Registriert seit: 15.04.2004
Beiträge: 126
pcschröda
Standard

$.data sieht ebenfalls interessant aus, ist allerdings clientseitig, und meine Meta-Daten kommen nunmal vom Server...

Danke für alle Anregungen!


pcschröda
pcschröda ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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 an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
HTML Codes übertragen? Extremefall JavaScript, Ajax und mehr 7 28.01.2011 21:50
Per Formular in SQL schreiben und inhalt in Html Datei ausgeben tinol23 PHP Einsteiger 1 24.01.2011 20:25
Scriptsuche Daten aus HTML Tabelle A in HTML Tabelle B einfügen headbannger83 Scriptbörse 1 10.01.2011 15:39
RSS Feed Html Form zu XML network7 PHP Tipps 2010 6 17.11.2010 16:40
Problem mit PHP Simple HTML DOM Parser berryone PHP-Fortgeschrittene 2 30.08.2010 18:00
Doppelter E-Mail versand include21 PHP Tipps 2010 3 06.05.2010 15:47
JSON Problem Dopar JavaScript, Ajax und mehr 11 11.04.2010 01:00
html formular mit einer php mail funktion basti-erfurt Scriptbörse 3 07.12.2008 15:21
Variable und komplette HTML Datei chrisonline PHP Tipps 2007 3 24.05.2007 15:30
&amp;amp;amp;lt;if&amp;amp;amp;gt; &amp;amp;amp;lt;/if&amp;amp;amp;gt; in einer HTML Datei fuer Templ PHP-Fortgeschrittene 6 03.11.2005 12:05
Kontaktformular, welches auf neue html Seite führt PHP Tipps 2005-2 4 20.07.2005 11:21
HTML Tabellenzeile in Tabelle einfügen? Datenbanken 2 28.01.2005 00:28
IMAP: Bild(er) in HTML Part richtig darstellen PHP-Fortgeschrittene 1 07.10.2004 12:21
{$varname.optelement} mit preg_match aus HTML extrahieren PHP Tipps 2004 0 11.09.2004 04:13
Validitor (HTML 4.01) = Schwachsinn? Filewalker Off-Topic Diskussionen 19 03.08.2004 15:27

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
json php encode ausgabe formatieren, json direkt in html ausgeben, json in html darstellen, html meta json, json to html, metadaten json, html element jsonm meta data, json als html anzeigen, json objekt ausgeben, json datensatz in php darstellen, metadaten in html, html in json verpacken, php json html darstellen, json in html einpacken, json in html packen, html in json decode, json objekt ins html schreiben, json fehler, json webseite, json php abfrage

Alle Zeitangaben in WEZ +2. Es ist jetzt 09:32 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum