JSON Iframe Parser
Schorsch
- javascript
Guten Tag
Dokument A erstellt einen Iframe.
Dieser wird abgeschickt (fileupload).
Der Server liefert JSON zurück, nämlich:
{'eins':'blah', 'html':'<a href="blah.html" title="blih">'}
Von Dokument A gehe ich nun das JSON holen:
content = iframeId.contentDocument.body.innerHTML
Problem:
Ich erhalte nun das JSON mit falschen Hochkommas:
{"eins":"blah", "html":"<a href="blah.html" title="blih">"}
Die Funktion eval bricht nun zusammen, da es kein gültiges JSON
ist, da die Kommas ja nicht stimmen.
Frage:
Kann ich
- Das JSON aus dem Iframe so holen,
dass es mir die Hochkommas nicht verfälscht?
- Kann ich {"eins":"blah", "html":"<a href="blah.html" title="blih">"}
mit einem geeignetes Parser trotzdem parsen?
Bin um jede Hilfe froh, stecke fest!
NB: Arbeite mit jQuery
Merci!
Hi,
Dokument A erstellt einen Iframe.
Dieser wird abgeschickt (fileupload).
Der Server liefert JSON zurück, nämlich:{'eins':'blah', 'html':'<a href="blah.html" title="blih">'}
Von Dokument A gehe ich nun das JSON holen:
content = iframeId.contentDocument.body.innerHTML
Nein, du gehst das holen, was der Browser für die angebrachte textuelle HTML-Repräsentation des Dokumentinhaltes hält.
Das kann je nach Browser ganz unterschiedlich aussehen, und sogar reichlich grausam (im IE).
Kann ich
- Das JSON aus dem Iframe so holen,
dass es mir die Hochkommas nicht verfälscht?
Das kommt erst mal drauf an, wie du es überhaupt in den Iframe hineinbugsierst.
- Kann ich {"eins":"blah", "html":"<a href="blah.html" title="blih">"}
mit einem geeignetes Parser trotzdem parsen?
Klar, wenn dir danach ist, könntest du dir was basteln, was das zunächst wieder in gültiges JSON umwandelt. Allerdings, wie gesagt - innerHTML kann je nach Browser vollkommen unterschiedlich ausfallen.
MfG ChrisB
Salut
innerHTML kann je nach Browser vollkommen unterschiedlich ausfallen.
Demnach lautet meine Frage:
Wie lautet die Alternative zu
innerHTML
welche mir den Inhalt genau so liefert, wie ihn der Iframe
vom Server bekommen hat? Hat da jQuery was, mit dem ich auf den
Inhalt im Body des Iframes zugreifen kann?
Gruss
Schorsch
Salut!
- Das JSON aus dem Iframe so holen,
dass es mir die Hochkommas nicht verfälscht?Das kommt erst mal drauf an, wie du es überhaupt in den Iframe hineinbugsierst.
Der Iframe geht als Formular auf den Server.
Der Server gibt JSON Text aus.
Dieser ist also dann im Body des Iframes.
Gruss
Schorsch
Hi,
Der Server gibt JSON Text aus.
Dieser ist also dann im Body des Iframes.
Warum?
Warum nicht in vernünftiger Form, in einem Script-Element?
Dann könnte das im Iframe selber schon geparst werden, und du bräuchtest nur noch das entstehende Objekt vom anderen Dokument aus abholen.
MfG ChrisB
Salut!
Dann könnte das im Iframe selber schon geparst werden, und du bräuchtest nur noch das entstehende Objekt vom anderen Dokument aus abholen.
Gute Idee, merci!
Iframe:
$(function(){
var testvar = {'blah':'traaa!', 'blih':'hello world'};
}
Anderes Dokument:
$("#myIframe").undwieweiter?
Wie komme ich auf die testvar, welche im Iframe
im jQuery Scope drin definiert wurde?
Tnx!
Schorsch
Hi,
Wie komme ich auf die testvar, welche im Iframe
im jQuery Scope drin definiert wurde?
Nix Scope - globale Variable, und gut.
MfG ChrisB
Salut
Nix Scope - globale Variable, und gut.
Leider hab ich grad ein schwarzes Loch:
Warum funktioniert:
$.("#myIframeId").testvar.blah
Nicht? Irgendwas hab ich da noch nicht kapiert...
Gruss
Schorsch
Hi,
Leider hab ich grad ein schwarzes Loch:
Hoffentlich hast du noch genug Haare, dass es nicht auf den ersten Blick so auffällt ...
Warum funktioniert:
$.("#myIframeId").testvar.blah
Nicht?
Bei deinem vorher gezeigten Code?
Weil dort textvar eine lokale Variable innerhalb einer Funktion ist.
MfG ChrisB
Salut
Das steht im iframe:
$(function(){
var testvar = {'blah':'traaa!', 'blih':'hello world'};
});
Leider habe ich keinen Schimmer, wie man "von aussen"
an die "testvar" rankommt.
Firebug tut so, wie wenn's gar nicht existiert.
self.iframe... $.("#myIframeId") ... usw. komme nicht weiter.
Brauche Hilfe.
Gruss!
Hi,
Das steht im iframe:
Ja, warum zum Geier, steht's denn da immer noch ...?
$(function(){
var testvar = {'blah':'traaa!', 'blih':'hello world'};
});
Dann lass' den Quatsch mit der Funktion doch einfach weg ...
> Brauche Hilfe.
Brauchst Grundlagenkenntnisse.
MfG ChrisB
--
“Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
Hi!
Warum funktioniert:
$.("#myIframeId").testvar.blah
Nicht? Irgendwas hab ich da noch nicht kapiert...
Der erste Punkt muss weg.
Lo!
Wie komme ich auf die testvar, welche im Iframe
im jQuery Scope drin definiert wurde?
Mit jQuery kommst du hier nicht weiter - hier brauchst du JavaScript-Kenntnisse.
Erstmal definierst du die Variable global, wie gesagt ohne jQuery-Code. Einfach
<script type="text/javascript>
textvar = {...};
</script>
Aus der Ursprungsseite kommst du am so zur Variable:
window.frames.FRAMENAME.testvar
wobei der iframe den entsprechenden Namen tragen muss:
<iframe name="FRAMENAME"></iframe>
jQuery hilft dir da nicht weiter - die contents()-Methode gibt einem zwar das document-Objekt des Dokuments in einem iframe, aber du willst das window-Objekt. Denn globale Variablen sind Eigenschaften des window-Objektes.
Mathias
Erstmal definierst du die Variable global […]
Oder wirklich extrem global: top.allmende = {...}
Problem:
Ich erhalte nun das JSON mit falschen Hochkommas:{"eins":"blah", "html":"<a href="blah.html" title="blih">"}
Hallo Schorch,
auch wenn Dir das nicht weiterhilft, aber die Hochkommas sind richtig und entsprechen der JSON Spezifikation (siehe http://www.json.org/).
Das Parsen sollte doch eigentlich kein Problem sein.
MfG
Problem:
Ich erhalte nun das JSON mit falschen Hochkommas:{"eins":"blah", "html":"<a href="blah.html" title="blih">"}
Hallo Schorch,
auch wenn Dir das nicht weiterhilft, aber die Hochkommas sind richtig und entsprechen der JSON Spezifikation (siehe http://www.json.org/).
Nein das stimmt nicht. Schau mal genauer hin
Struppi.
Hallo Struppi,
auch wenn Dir das nicht weiterhilft, aber die Hochkommas sind richtig und entsprechen der JSON Spezifikation (siehe http://www.json.org/).
Nein das stimmt nicht. Schau mal genauer hin
Struppi.
meinst Du die fehlenden escapes für die double-quotes innerhalb des a-tag? Dann hast Du Recht, das ist so falsch. Ansonsten weiß ich nicht worauf Du anspielst und bitte um Aufklärung.
MfG
meinst Du die fehlenden escapes für die double-quotes innerhalb des a-tag? Dann hast Du Recht, das ist so falsch.
Genau das meinte ich, deine Worte waren: "Das Parsen sollte doch eigentlich kein Problem sein." - was eben deshalb nicht stimmt.
Struppi.