如何使用JSON将信息从细枝传递到Javascript?

如何使用JSON将信息从细枝传递到Javascript?,javascript,json,symfony,twig,Javascript,Json,Symfony,Twig,细枝: $(document).ready(function(){ var contexts = $('.credsEarned'); for(var i = 0;i<contexts.length;i++){ var data = $('#test').data("isTest"); var context = contexts.get(i).getContext('2d'); } }); {score%中的i的% {%endfor%} javascript

细枝:

$(document).ready(function(){
var contexts = $('.credsEarned');
    for(var i = 0;i<contexts.length;i++){ 
        var data = $('#test').data("isTest");
var context = contexts.get(i).getContext('2d');
}
});
{score%中的i的%
{%endfor%}
javascript:

    {% for i in score %}
    <canvas class="credsEarned">
    <div id="test" data-is-test="{{ i.pts|json_encode }}">
    </div>
    </canvas>
    {% endfor %}
{% for i in score %}
<canvas class="credsEarned">
<div class="js-user-rating" data-is-authenticated="{{ i.pts }}"></div>
</canvas>
{% endfor %}
$(文档).ready(函数(){
变量上下文=$('.credsworn');

对于(var i=0;i我不知道您的脚本有多大,但是您可以将它放在模板中,使用twig设置变量

$(document).ready(function(){

    var contexts = $('.credsEarned');
    for(var i = 0;i<contexts.length;i++){
        var userRating = document.querySelector('.js-user-rating');
        var data = userRating.dataset.isAuthenticated;
}
});
{score%中的i的%
{%endfor%}
$(文档).ready(函数(){
变量数据数组=[
{分数中i的百分比-%}
{{i.pts|json_encode},
{%endfor-%}
];
变量上下文=$('.credsworn');

对于(var i=0;i我在这里看到的是,您没有使用indicei来选择您的js用户评级,这正常吗?我想这就是为什么您总是使用第一个元素的原因

也许,你可以这样做:


for(var i=0;IID是唯一的,使用相同的id创建多个元素(就像在循环中一样)导致意外结果。@ccKep是对的,您应该更改类的id,然后在canvas元素中查询它。此外,您可能不应该将JSON放在html属性中,因为JSON包含键/值的引号,可能会弄乱htmlsyntax@PatrickEvans那么,我还能如何将动态信息从我的小树枝传递到javascrip呢t?对不起,我很抱歉learning@MarkE我是新来的,对JSON一无所知。这个解决方案不起作用。我只是用这种方式得到最后一个变量,我以前也得到了第一个变量。我应该指出,我的js代码不是在树枝里面,而是在另一个树枝里面file@Megumin这只是一个可以实现的例子。你仍然需要使用
for
-循环中的变量执行操作obvious@Megumin您看过并测试过我更新的代码吗?您是否尝试过将
dataArray
变量输出到控制台?它应该包含比最后一项更多的内容。@Megumin我为您添加了一种方法,使您可以将主脚本保存在单独的文件中,并且仍然可以从控制台获取数据模板。
{% for i in score %}
    <canvas class="credsEarned">
        <div class="js-user-rating"></div>
    </canvas>
{% endfor %}

<script>
    $(document).ready(function(){
        var dataArray = [
            {% for i in score -%}
                {{ i.pts|json_encode }},
            {% endfor -%}
        ];

        var contexts = $('.credsEarned');
        for(var i = 0;i<contexts.length;i++){ 
            var data = dataArray[i];
            var context = contexts.get(i).getContext('2d');
        }
    });
</script>
{% for i in score %}
    <canvas class="credsEarned">
        <div class="js-user-rating"></div>
    </canvas>
{% endfor %}

<script>
    dataArray = [
        {% for i in score -%}
            {{ i.pts|json_encode }},
        {% endfor -%}
    ];
</script>
<script>
    $(document).ready(function(){
        var contexts = $('.credsEarned');
        for(var i = 0;i<contexts.length;i++){ 
            var data = dataArray[i];
            var context = contexts.get(i).getContext('2d');
        }
    });
</script>