【发布时间】: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"=>$0, "3E"=>$val3E。你能解释一下吗?我认为在 2E 中,您的意思是 0 而不是 $0。 -
是的@david,我的意思是 0。
-
PHP 有关联数组。 JavaScript 没有。如果键不是数字,则 JSON.parse 将返回一个 JavaScript 对象。
标签: javascript php html associative-array