通过JSON将javascript数组发送到php;不起作用

Sending javascript array to php via JSON doesn't work

本文关键字:php 不起作用 JSON javascript 数组 通过      更新时间:2023-09-26

我有一个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);

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

应该是这样的:

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

您也可以使用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属性一起工作,请按照上面的答案进行。

函数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);

试试这个:

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>

Process.php

<?php
$arr=json_decode($_POST['hiddenF']);
print_r($arr);
?>