【问题标题】:Javascript innerHTML and JSON parsed string differenceJavascript innerHTML 和 JSON 解析字符串的区别
【发布时间】:2016-07-14 09:50:27
【问题描述】:

我在我的项目中使用 JSmart(SMARTY JS 端口)。我有两个选择来获取模板:

  1. 插入到里面

然后拉过来

document.getElementById('tpl').innerHTML
  1. 以 JSON 值接收

我遇到了第二个选项的问题:JSON.Parse 之后的项目值包含特殊字符,如 \r \n 或 \t,包括 / 等。JSmart 不明白这一点。

如果从 innerHTML 中提取结果字符串,则处理得很好。

小例子: JSON解析值:

标签: javascript json smarty decode innerhtml


【解决方案1】:

模板文件不是JSON,是smarty模板。但是,您可以像这样从文件/url 中获取它:

$.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 );
});

演示: https://jsfiddle.net/iRbouh/3wpfu604/

【讨论】:

  • 我通过 $.getJSON 接收这个模板作为接收对象的一部分:{data: "...", tpl: "..."}
  • 不要使用 getJSON !模板不是有效的 JSON,而是使用 get !
  • 再次,我收到 JSON 字符串,如 {data: "...", tpl: "..."},$.getJSON 将其解码为 JS 对象 X。我尝试使用 X。数据和 X.tpl
  • 我的 innerHTML 看起来像 pastebin.com/bYtDgAY4 但 X.tpl 像 pastebin.com/4PKhqqQx
  • 很奇怪。我想这有点像双重转义。将尝试发现我的代码可能在哪里......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-12-24
  • 1970-01-01
  • 2014-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-06
相关资源
最近更新 更多