2

我有以下json:

var data = [
  {
    "name": "wiredep",
    "version": "4.0.0",
    "link": "https://github.com/taptapship/wiredep",
    "licensePath": "/licenses/wiredep"
  }
];

现在我使用以下代码在 html 页面上呈现它:

var transform = {"<>":"li","html":[
                    {"<>":"span class='name'","html": [{ "<>":"a", "href": " ${link}", "html": " ${name}"}]},
                    {"<>":"span class='vers'", "html":" ${version}"}, 
                    {"<>":"div","html":" ${licensePath}"}
                ]};
$(function(){
    // Create the list
    $('#list').json2html(data,transform);
});

里面/licenses/wiredep是包含许可信息的文本。我希望能够在 HTML 页面中呈现它。licensepath因此,我希望该文件中的文本出现,而不是本身出现?

所以最终的输出是:

名称: wiredep

版本: 4.0.0

许可路径内容:

麻省理工学院许可证 (MIT)

版权所有 (c) 2014 Stephen Sawchuk

特此免费授予任何获得本软件和相关文档文件(“软件”)副本的人,以不受限制地处理本软件,包括但不限于使用、复制、修改、合并的权利、发布、分发、再许可和/或出售本软件的副本,并允许向其提供本软件的人这样做,但须符合以下条件:

上述版权声明和本许可声明应包含在本软件的所有副本或大部分内容中。

本软件按“原样”提供,不提供任何形式的明示或暗示保证,包括但不限于适销性、特定用途适用性和非侵权保证。在任何情况下,作者或版权持有人均不对任何索赔、损害或其他责任承担任何责任,无论是在合同诉讼、侵权行为或其他方面,由本软件或本软件的使用或其他交易引起或与之相关。软件。

4

1 回答 1

3

JSON2HTML 不知道如何处理文件路径。如果您希望文件的内容包含在输出中,您需要自己添加它,data 然后再将其传递给json2html().

所以问题变成了“<em>如何从 javascript 中的路径获取文件的文本?”,答案并不像您预期​​的那么复杂。由于您已经在使用 jQuery,我将提供一个使用 的解决方案jQuery.get(),但当然也可以不使用 jQuery。

这个过程有两个部分:首先你必须向服务器发起一个请求,告诉它你想要一个文件的内容。这是使用上述方法完成的jQuery.get()

$.get('/licenses/wiredep');

而已!现在是第二部分:您必须等待服务器响应您请求的文件。我们通过将回调函数绑定到请求来做到这一点。您可以使用几个,它们在不同的情况下被调用。在这种情况下,为了简单起见,我们将忽略任何错误,只关注服务器响应正常的情况。在这种情况下,.done()回调将被触发:

$.get('/licenses/wiredep').done(function(data) {
  console.log('Contents of /licenses/wiredep:', data);
});

注意:这个回调是异步执行的。这意味着回调函数之外的任何代码都不能保证在请求完成后执行,即使它在请求之后也是如此

现在将这一切与您的代码联系在一起。我故意忽略了data一个可能包含多个对象的数组这一事实。

$.get('/licenses/wiredep').done(function(response) {
  var data = [
    {
      "name": "wiredep",
      "version": "4.0.0",
      "link": "https://github.com/taptapship/wiredep",
      "licensePath": response
    }
  ];

  var transform = {"<>":"li","html":[
                      {"<>":"span class='name'","html": [{ "<>":"a", "href": " ${link}", "html": " ${name}"}]},
                      {"<>":"span class='vers'", "html":" ${version}"}, 
                      {"<>":"div","html":" ${licensePath}"}
                  ]};

  $('#list').json2html(data, transform);
});
于 2018-12-03T17:42:09.913 回答