【问题标题】:PHP associative array null in Javascript functionJavascript函数中的PHP关联数组null
【发布时间】:2018-07-27 03:44:51
【问题描述】:

我有一个包含 6 个文本框的 PHP 网页,如下所示:

<html>
   <script type="text/javascript">

        function add()
        {
            //PHP associative array not storing properly in JS array

            var array = JSON.parse(<?php echo json_encode($elementsindex); ?>);//getting array

            //JS array elements not printing
            for(var i in array)
            {
                alert("key = "+i+" and value = "+array[i]);
            }

            for(var key in array)
            {
                if(array[key]===null || array[key]===0)//for loop not executing
                {
                    var valtoadd = 5;

                    array[key] = valtoadd;//add value to index IN ARRAY

                    var textbox = document.getElementById(key);
                    textbox.value = valtoadd;//add value to textbox 
                }
            }
        }
    </script>
   <body>
   <form method="POST" action="">
      <div id="operation">
            <input type="text" id = "5E" name="5E" value="">
            <input type="text" id = "4E" name="4E" value="" >
            <input type="text" id = "3E" name="3E" value="">
            <input type="text" id = "2E" name="2E" value="">
            <input type="text" id = "1E" name="1E" value="">
            <input type="text" id = "0E" name="0E" value="">
        </div>
        ....rest of the code
     </form>
        ..php code

我在同一页面中有一个 PHP 代码,它在特定的 buttonclick() 上调用 Javascript 函数 add(),它运行良好:

   <?php
    include 'footer.php';

   if($_SERVER['REQUEST_METHOD'] == "POST" and isset($_POST['PUSH']))
    { 
        //I am creating an associative array
        $elementsindex = array("0E"=>0 ,"1E"=>0,"2E"=>0, "3E"=>0, "4E"=>0, "5E"=>0);

        echo '<script type="text/javascript">';
        echo 'add();'; //invoking JS function
        echo '</script>';
    }
    ?>

然而,在 Javascript 函数 add() 中,PHP 数组并未存储在 var 数组中。此外,数组元素不会打印在警告框中,代码永远不会执行 for(var key in array) 循环。

我确信关联数组被正确传递(成功调用了 Javascript 函数),但可能没有在 JS 函数中接收到,因为最初键值对中的所有值都为零(项目需要)。

【问题讨论】:

  • "2E"=&gt;$0, "3E"=&gt;$val3E。你能解释一下吗?我认为在 2E 中,您的意思是 0 而不是 $0。
  • 是的@david,我的意思是 0。
  • PHP 有关联数组。 JavaScript 没有。如果键不是数字,则 JSON.parse 将返回一个 JavaScript 对象。

标签: javascript php html associative-array


【解决方案1】:

此代码将$a 存储到对象变量中。我只是改变了获取值的方式。

var obj = <?php echo json_encode($a); ?>;
for (var i in obj)
{
    alert("key = " + i + " and value = " + obj[i]);
}

【讨论】:

  • 很奇怪。你用我的代码,对吧?我测试了我的,它可以工作。
  • 是的,我使用了你的代码; php 数组元素是否打印在您的代码中,即 key = 0E 和 value = 0 等等..?
  • 是的,它按预期工作。啊,你能张贴html表格吗?我在您的问题中没有看到任何表单标签。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-26
相关资源
最近更新 更多