【问题标题】:Passing PHP array into JavaScript for loop将 PHP 数组传递给 JavaScript for 循环
【发布时间】:2020-12-13 10:15:27
【问题描述】:

我正在尝试将一些值从 PHP 数组传递到 JavaScript。

我的 php 变量 $contacts_info 具有以下值。

Array ( [0] => Array ( [contact_id] => 20 [type_id] => 2 [contact_type] => Representative Phone [contact_value] => 0987654321 )
        [1] => Array ( [contact_id] => 21 [type_id] => 4 [contact_type] => Shop Address [contact_value] => 0987654321 ) 
        [2] => Array ( [contact_id] => 22 [type_id] => 3 [contact_type] => Emergency Phone [contact_value] => 0987654321 ) 
        [3] => Array ( [contact_id] => 23 [type_id] => 2 [contact_type] => Representative Phone [contact_value] => 0987654321 ) 
        [4] => Array ( [contact_id] => 24 [type_id] => 3 [contact_type] => Emergency Phone [contact_value] => 0987654321 ) 
        [5] => Array ( [contact_id] => 25 [type_id] => 4 [contact_type] => Shop Address [contact_value] => 0987654321 ) ) 1

我正在尝试使用 JavaScript 在带有 for 循环的某些 Combobox 中分配特定值。但我这样做有问题。

Type: ParseError

Message: syntax error, unexpected '<', expecting ']'

我的 JavaScript 代码:

<script>
    var total_counter = "<?php echo $total_contact; ?>";
    var contact_info = "<?php json_encode($contacts_info); ?>";
    for (var i = 0; i <= total_counter - 1; i++) {
        let element = document.getElementById("contact_type_id_" + i);
        element.value = "<?php echo $contacts_info[<script>document.writeln(i);</script>]['type_id'] ?>";
    }
</script>

问题出在这部分&lt;?php echo $contacts_info[&lt;script&gt;document.writeln(i);&lt;/script&gt;]['type_id'] ?&gt;。谁能帮帮我。

谢谢。

【问题讨论】:

  • var contact_info = &lt;?php echo json_encode($contacts_info) ?&gt;; json_encode 无论如何都会添加它们),你想要回显结果。或者:var contact_info = &lt;?= json_encode($contacts_info) ?&gt;;
  • php 在服务器上运行,而 Javascript 在 php 完成后很长时间在浏览器中运行。您在 javscript 循环中不需要 php,因为您已经将 php 数组作为 json 传递给循环上方的变量
  • 您也不想在&lt;?php json_encode($contacts_info); ?&gt; 周围加上引号,但也缺少echo
  • 我想知道这个错误...Message: syntax error, unexpected '&lt;', expecting ']' ...结果代码中没有&lt;。至少不应该有。

标签: javascript php codeigniter model-view-controller


【解决方案1】:

请按如下操作,

  1. 您需要删除包含 PHP 脚本的双引号,因为 "" 将其视为字符串。

  2. &lt;?php echo json_encode($contacts_info); ?&gt; 缺少 echo,因为 JSON 数组没有得到回显,因此可以将其分配给 javascript 变量 contact_info

  3. 变量contact_info已经有了你的JSON数组,不需要再从PHP变量中获取,

最终你的代码应该是这样的,

 <script>
        var total_counter = <?php echo $total_contact; ?>;
        var contact_info = <?php echo json_encode($contacts_info); ?>;
        for (var i = 0; i <= total_counter - 1; i++) {
            let element = document.getElementById("contact_type_id_" + i);
            element.value = contact_info[i].type_id ;
        }
    </script>

【讨论】:

  • 非常感谢。 :) 工作。
  • @Firdous bhat:虽然此代码可能会回答问题,但提供有关它如何和/或为什么解决问题的额外上下文将提高​​答案的长期价值。
  • 答案改进了,先生 ;)
猜你喜欢
  • 2016-06-25
  • 1970-01-01
  • 2019-09-16
  • 2018-11-28
  • 2011-05-16
  • 2012-06-26
  • 1970-01-01
  • 1970-01-01
  • 2014-06-11
相关资源
最近更新 更多