0

我有一个 javascript 数组,想通过表单输入隐藏字段将其发送到 php。我正在做的是在这里:

html:

<form method="post" action="a.php" onSubmit="fun();">
    <input type="hidden" name="hiddenF" value="">
</form>

在javascript中:

function fun()
{
    var jArray = [ "One", "Two", "Three"];

    document.getElementsByName("hiddenF").value = JSON.stringify(jArray);
}

最后在 php 中,我需要一个数组,如下所示,但我没有在页面上得到任何东西。

$arr=json_decode($_POST['hiddenF']);
print_r($arr);
4

4 回答 4

1

您也可以通过使用 ID 属性来做到这一点。这将起作用

<?php
if(isset($_POST["submit"])){
    $arr = json_decode($_POST['hiddenF']);
    print_r($arr);
}
?>

<script type="text/javascript">
function fun()
{
    var jArray = [ "One", "Two", "Three"];
    document.getElementById("hiddenF").value = JSON.stringify(jArray);
}

</script>

<form method="post" action="<?=$_SERVER["PHP_SELF"]?>" onSubmit="fun();">
    <input type="hidden" name="hiddenF" value="" id="hiddenF">
    <input type="submit" name="submit" />
</form>

如果您想让它与 name 属性一起使用,请使用上述答案。

于 2013-07-10T09:50:18.623 回答
1

document.getElementsByName("hiddenF")返回一个数组。所以你需要添加 [0] 来访问你隐藏的输入。

应该是这样的:

document.getElementsByName("hiddenF")[0].value = JSON.stringify(jArray);
于 2013-07-10T09:02:04.653 回答
0

该函数document.getElementsByName返回一个数组,因此您无法更改.value此数组的。

// ...
document.getElementsByName("hiddenF")[0].value = JSON.stringify(jArray);

但我建议你getElementById改用。

HTML:

<input type="hidden" id="hiddenF" name="hiddenF" value="">

JS:

// ...
document.getElementById("hiddenF").value = JSON.stringify(jArray);
于 2013-07-10T09:07:38.287 回答
0

尝试这个:

Java 脚本:

function fun(){
    var jArray = [ "One", "Two", "Three"];
    document.getElementsByName("hiddenF")[0].value = JSON.stringify(jArray);    
}

html表单:

<form method="post" action="process.php" onSubmit="return fun();">
    <input type="hidden" name="hiddenF" value="">
    <input type="submit" value="Submit"/>
</form>

进程.php

<?php
$arr=json_decode($_POST['hiddenF']);
print_r($arr);
?>
于 2013-07-10T09:08:12.457 回答