我试图将一个 php 数组传递给 javascript 函数 onload,它将在下拉列表中显示 js 数组,但现在我已经这样做了一段时间,我想我需要再次弹出它
首先我使用这段代码将它从一个 php 文件传递到另一个
header("location: Rules.php?varFields=".serialize($varFields));
其次,我转移到另一个变量,因为它已传递到所述 php 文件
<?php
$varArray = unserialize($_GET['varFields']);
?>
第三部分我想把它传递给一个 jS 函数,然后将它显示到一个下拉列表中
<body id="body" onclick="cmbRuleField(\'' + <?php echo json_encode($varArray);?> + '\');" >
这是外部javascript代码
function cmbRuleField(varArray)//ruleField
{
var varDisplay = JSON.stringify(varArray);
var sel = document.getElementById("ruleField") // find the drop down
for (var i in varDisplay)
{ // loop through all elements
var opt = document.createElement("option"); // Create the new element
opt.value = varDisplay [i]; // set the value
opt.text = varDisplay [i]; // set the text
sel.appendChild(opt); // add it to the select
}
}
对于前两部分我已经测试过了并且它可以工作但是对于最后一部分我不能让它工作
最佳答案
我觉得这部分看起来很可疑
<body id="body" onclick="cmbRuleField(\'' + <?php echo json_encode($varArray);?> + '\');" >
也许
<body id="body" onclick="cmbRuleField(<?php echo json_encode($varArray);?>)">
更像它。
还有一个提示,您可以在呈现的页面上查看输出以确定写出的代码是什么样的。所以如果你看到类似这样的东西:
<body id="body" onclick="cmbRuleField('['a', 'b']')">
你知道有问题。您希望像这样传递 native Javascript 数组
<body id="body" onclick="cmbRuleField(['a', 'b'])">
编辑
通过聊天讨论后,很明显 OP 代码的顶部部分也需要调整。
header("location: Rules.php?varFields=".http_build_query($varFields));
关于javascript - 通过将 php 数组传递给 javascript 函数来填充下拉列表 onload,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21942659/