PHP关联数组在Javascript函数中为null

时间:2018-07-27 03:44:51

标签: javascript php html associative-array

我有一个包含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函数处接收到,因为最初键-值对中的所有值均为零(该项目所需) )。

1 个答案:

答案 0 :(得分:0)

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

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