如何将Javascript片段加载到DOM中

时间:2012-06-13 23:36:10

标签: javascript jquery json dom backbone.js

我正在使用骨干和延迟加载我的一个视图的模板和数据。对于“简单”(就不必进行多个异步服务器调用而言),我试图从同一个文件 persons.php 加载两者,返回如下内容:

<script type='text/template' id='persons-template'>
    <div><%= name %></div>
</script>

<script type='text/javascript'>
    var persons: [
        { name: "some dude" },
        { name: "some other dude" }
    ];
</script>

视图本身正在使用Ajax调用加载此文件,并尝试解析,如下所示:

var self = this;
$.get("persons.php").function(data) {
    self.template = _.template($(data).html());

    self.model = new PersonsCollection;

    // problem here: persons is undefined
    self.model.reset(persons);
    self.render();
});

因此,未定义。我知道原因:脚本块没有添加到DOM中。我可以使用$(data)[1]来获取 HtmlScriptElement ;使用$($(data)[1])。text()给出了Javascript字符串,如下所示:

  

“var persons:[{name:”some dude“},{name:”some some dude“}];”

如何访问人员对象,以便将其传递给我的模型?

1 个答案:

答案 0 :(得分:2)

在模板化之前,先取回任何返回的脚本with no typetype 'text/javascript'stuff it into the DOM

$.get("persons.php").function(data) {
    $(data)
        .find('script[type="text/javascript"], script[type!=""]')
        .appendTo('head');

  // proceed as before
});