构建一个数组以POST到PHP

时间:2016-10-27 07:31:10

标签: javascript post

作为一个更大问题的一部分,我提出了一个简化的例子,说明我目前所处的位置。

我有一个html表单,它使用数组的javascript POST到test.php文件。 如果我发布一个普通的硬编码文本字符串,它就可以了如果我尝试发布一个我从我的表单构建的数组,那么“Hello from test”会出来,但数据却没有。结果在警告框中可见。

(我已经注释掉了纯文本位)

我不知道我做错了什么?该数组在Chrome调试器中看起来不错。

这是html和php

<html>
<head>
    <script language="javascript" type="text/javascript" src="jquery-3.1.1.js"></script>
    <script>
    function testResults(myform)
    {
        var outputArray =[];
        var count = 0;
        for (var inp of myform) 
        {
            if (inp.className == "portfolio")
            {
                if (inp.checked == true)
                {

                    var nameString =  inp.name;
                    var valueString = inp.value
                    outputArray[count]= nameString + ':' + '"' + valueString + '"';
                    count = count +1;
                }
            }
        }
        //alert (outputArray);

        $.post("test.php",
        {
            //blackPortfolio: "Black",
            //bluePortfolio: "Blue"
            outputArray
        },
        function(data,status)
        {
            alert("Data: " + data + "\nStatus: " + status);
        });
    }


    </script>
</head>
<body>

    <div id="userForm" >

    <form name="myForm" action="BuildPostStrng.html" onsubmit="return testResults(myForm)" method="POST"> 
        <div class="CheckBoxTable">
            <div class="CheckBoxCell">
                <input type = "checkbox" class="portfolio" name = "blackPortfolio"  value = "Black" />
                <label for = "blackPortfolio">Black</label>
            </div>
            <div class="CheckBoxCell">
                <input type = "checkbox" class="portfolio" name = "bluePortfolio"  value = "Blue" />
                <label for = "bluePortfolio"> Blue </label>
            </div>
        <input type="submit" value="OK">
    </form>
</div>
<div id="map" </div>

test.php的

<?php
echo 'Hello from Test.php <BR>';

foreach($_POST as $key => $value)
{
		echo $key;
		echo '<BR>';
		echo $value;
		echo '<BR>';
}
?>

1 个答案:

答案 0 :(得分:0)

the manual; data参数必须是普通对象或字符串

你传给它的数组是不允许的。