2016-07-14 22 views
0

我在我的项目中使用JSmart(SMARTY JS端口)。我有两个选择,以获得模板:Javascript innerHTML和JSON解析字符串差异

  1. 插入内

    <脚本ID = “第三方物流” 类型= “文本/ X-jsmart-TMPL” > ... < /脚本>

document.getElementById('tpl').innerHTML 
01拉
  • 接收它在JSON值
  • 我遇到的问题与第二个选项:JSON.Parse后项值包含特殊字符等\ r \ n或\吨,includng/JS JSmart不会拒绝这一点。

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

    小例子: JSON解析值:

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

    innerHTML的拉动值:

     
    <!-- 
        SMARTY template 
         data object 
    

    我怎么能转换成JSON解析值等于从我得到的innerHTML字符串?

    +0

    请添加JSON模板! –

    +0

    请参阅pasteBin:http://pastebin.com/bYtDgAY4 –

    +0

    Node.js或Browser? –

    回答

    0

    模板文件不是JSON,是一个聪明的模板。但是,你可以从这样的文件/ 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/

    +0

    我通过$ .getJSON收到此模板作为接收对象的一部分: {data:“...”,tpl:“...”} –

    +0

    请勿使用getJSON!该模板不是有效的JSON而是使用get! –

    +0

    再次,我收到JSON字符串,如{data:“...”,tpl:“...”},$ .getJSON将其解码为JS对象X.我尝试使用X.data和X.tpl –