2016-07-14 15 views
0

Ich verwende JSmart (SMARTY JS-Port) in meinem Projekt. Ich habe zwei Optionen, um die Vorlage zu erhalten:Javascript innerHTML und JSON analysierte Zeichenfolge Unterschied

  1. legt es in

    < Skript id = "tpl" type = "text/x-JSMART-tmpl" > ... </script >

und ziehen sie sie von

document.getElementById('tpl').innerHTML 
  1. erhält es in JSON Wert

ich ein Problem mit der zweiten Option erfüllen: Elementwert nach JSON.parse enthält Sonderzeichen wie \ r \ n oder \ t, includng/etc. JSmart erkennt das nicht.

Im Falle des Ziehens von innerHTML der Ergebnis-String gut behandelt.

Kleines Beispiel: JSON analysiert Wert:

 
<!-- \r\n SMARTY template\r\n\tdata object\r\n 

innerHTML- gezogen Wert:

 
<!-- 
    SMARTY template 
     data object 

Wie kann ich konvertieren JSON Wert auf die Zeichenfolge gleich analysierte ich von innerHTML- bekam?

+0

Bitte fügen Sie eine JSON-Vorlage Sie können jedoch aus einer Datei/url wie diese holen! –

+0

Siehe auf pasteBin: http://pastebin.com/bYtDgAY4 –

+0

Node.js oder Browser? –

Antwort

0

Die Vorlage Datei ist nicht JSON, ist eine Smarty-Vorlage.

$.get("template_url", function(tplText) { 
    var tpl = new jSmart(tplText); 
    //Compile the tpl with your data object 
    var res = tpl.fetch(data); 
    //res is your compiled HTML 
    //document.write(res); 
}); 

Demo:https://jsfiddle.net/iRbouh/3wpfu604/

+0

Ich empfange diese Vorlage via $ .getJSON als Teil des empfangenen Objekts: {data: "...", tpl: "..."} –

+0

Verwenden Sie nicht getJSON! die Vorlage ist kein gültiger JSON, sondern benutze get! –

+0

Erneut erhalte ich eine JSON-Zeichenfolge wie {data: "...", tpl: "..."} und $ .getJSON dekodiert sie in das JS-Objekt X. Ich versuche, X.data und X.tpl –