将隐藏字段转换为PHP数组

时间:2017-01-28 02:47:25

标签: javascript php html5

我需要一些帮助。我在我的html代码中有这个隐藏字段,我在javascript中添加一个值作为数组。在我的PHP代码中,我想获取隐藏字段的值并将其视为php数组。然而,这对我不起作用。相反,它将整个价值视为一个整体。如何将隐藏字段作为值转换为php数组,并在特定索引处打印出值。

以下是我的隐藏字段的代码

<form name = "wall" action="Respon.php" method="post">
<fieldset>
    <input type="hidden" name ="widths[]" id ="widths" value="" />
    <input type="hidden" name ="lengths[]" id ="lengths" value="" />
</fieldset>

这是我在隐藏字段中添加值的javascript代码

widthL.push(Number(widths));
lengthL.push(Number(lengths));

$("#widths").val(widthL);
$("#lengths").val(lengthL);

正如您所看到的,我正在将这些值转换为数字,因为我从输入文本字段中获取了我的值。

这是获取隐藏字段值的php代码。

<?php

$index = 0;

$widthlist = array();
$lengthlist = array();

$widths = $_REQUEST['widths'];
$lengths = $_REQUEST['lengths'];

array_push($widthlist, $widths);
array_push($lengthlist, $lengths);

$count = count($widthlist);

foreach ($widthlist as $w => $value) {
   echo $widthlist[$index];
   echo "<br />";
}

for($x = 0; $x < $count; $x++) {

   echo $widthlist[$x];
   echo "<br />";
}
?>

我尝试了上述两种方法,但没有任何工作。它将所有这些打印在同一行上作为一个值

有人可以帮助我吗

4 个答案:

答案 0 :(得分:0)

我想你必须在这里使用ajax来通过php访问javascript变量。在您的代码中,在推送值之后,使用带有所需值的ajax作为数据和脚本位置作为同一文件。 您必须通过数据字段中的json对象发送两个数组。

$.ajax({
    type: "POST",
    url: "file.php",
    data: { arr2 : a2 },
    success: function() {
        alert1('ok, sent');
    }
});

答案 1 :(得分:0)

试试这个

Address Position - Beginning of the Vector Position 

答案 2 :(得分:0)

一个选项是@aimadnet建议,为每个值添加一个字段。原因是为了让PHP将字段解析为数组,您必须为每个值发布一次字段,所有值都相等,以[]结束。

我的建议是代码较少的替代方案。如果您确定了这些值(要么生成它们还是验证用户的输入),您可以将它们作为字符串发送,只有一个隐藏字段。

<input type="hidden" name ="widths" id ="widths" value="" />
<input type="hidden" name ="lengths" id ="lengths" value="" />

$("#widths").val(widthL.join("|")); //or any other separator
$("#lengths").val(lengthL.join("|"));

$widths = explode('|',$_REQUEST['widths']);
$lengths = explode('|',$_REQUEST['lengths']);
//TODO validate as numbers. You should validate them with any other method anyways

答案 3 :(得分:0)

我会这样做。我认为你应该序列化这些对象,然后在服务器中反序列化它们。

widthL.push(Number(widths));
lengthL.push(Number(lengths));

// 
var serializedwidthL = JSON.stringify(widthL);
var serializedlengthL = JSON.stringify(lengthL);
//
$("#widths").val(serializedlengthL );
$("#lengths").val(serializedlengthL );

然后当你在服务器中检索你的数组时:

$widthlist = json_decode($_REQUEST['widths'], true);
$lengthlist = json_decode($_REQUEST['widths'], true);

这将为您提供一个包含分隔元素的数组。