如何将智能模板中的数组分配给javascript,并在以下场景中访问javascript中相同的已分配数组?

时间:2014-04-25 10:38:46

标签: javascript php jquery arrays smarty

我将一个标题为$all_states的数组分配给smarty模板,如下所示:

Array
(
    [0] => Array
        (
            [id] => 1
            [state_name] => Alabama
            [abbreviation] => AL
            [created_at] => 1398342353
            [updated_at] => 1398342353
        )

    [1] => Array
        (
            [id] => 2
            [state_name] => Alaska
            [abbreviation] => AK
            [created_at] => 1398342353
            [updated_at] => 1398342353
        )

    [2] => Array
        (
            [id] => 3
            [state_name] => Arizona
            [abbreviation] => AZ
            [created_at] => 1398342353
            [updated_at] => 1398342353
        )

    [3] => Array
        (
            [id] => 4
            [state_name] => Arkansas
            [abbreviation] => AR
            [created_at] => 1398342353
            [updated_at] => 1398342353
        )

    [4] => Array
        (
            [id] => 5
            [state_name] => California
            [abbreviation] => CA
            [created_at] => 1398342353
            [updated_at] => 1398342353
        )

    [5] => Array
        (
            [id] => 6
            [state_name] => Colorado
            [abbreviation] => CO
            [created_at] => 1398342354
            [updated_at] => 1398342354
        )
)

我在同一页面上有一个jQuery代码如下:

$(document).ready(function() {
  window.prettyPrint() && prettyPrint();

  /*Actually I want to use the values from the above array into below loop*/
  for (var i = 1; i <= 100; i++) {
    $('#example28').append('<option value="' + i + '">' + i + '</option>');
  }

    $('#example28').multiselect({
      includeSelectAllOption: true,
      enableFiltering: true,
      maxHeight: 150
    });
  });

您可以从上面代码中的注释中看到我想将smarty中的上述数组解析为javascript for循环。我该怎么做到这一点?我无论如何都要这样做,所以这里的任何人都可以帮助我吗?提前致谢。如果您仍然需要有关我的问题的更多信息,我可以为您提供相同的信息。

1 个答案:

答案 0 :(得分:0)

尝试

$(document).ready(function() {
window.prettyPrint() && prettyPrint();

var myPhpArray = <?php echo json_encode($all_states); ?>; // <-- HERE'S YOUR ARRAY

/*Actually I want to use the values from the above array into below loop*/
for (var i = 1; i <= myPhpArray.length; i++) {
    $('#example28').append('<option value="' + i + '">' + i + '</option>');
}

$('#example28').multiselect({
    includeSelectAllOption: true,
    enableFiltering: true,
    maxHeight: 150
});
});

事实是,你不能直接将一个数组从php传递给js。我对smarty知之甚少,所以把它看作是一个更通用的方法来完成它。