如何使用jquery ajax将数组发送到php?

时间:2014-03-25 16:30:06

标签: php jquery ajax

我尝试使用serializeArray创建一个数组并将其发布到php。但我的代码不起作用。我读过这些问题(question),但我还没有理解我的错误。

这是我的ajax代码

    var str = $("form").serializeArray();
    $.ajax({
        type: "POST",
        url: "myfile.php",
        data: str,
        success: function (value) {
            $("#mydata").html(value);
        }
    });

HTML代码

<form>
    <select name="num0">
        <option value="">num0</option>
        <option value="12">12</option>
        <option value="13">13</option>
    </select>
    <select name="num1">
        <option value="">num2</option>
        <option value="123">123</option>
        <option value="133">133</option>
    </select>
    <select name="num2">
        <option value="">num3</option>      
        <option value="12345">12345</option>
    </select>
</form>

PHP代码

$postarr = array();
$num=$_POST['num0'];
$postarr[]=$num;
$num=$_POST['num1'];
$postarr[]=$num;
$num=$_POST['num2'];
$postarr[]=$num;

它给我以下错误消息:

注意:未定义的索引:num0(和其他变量的消息相同)。

顺便说一句,英语不是我的母语;请原谅输入错误。

3 个答案:

答案 0 :(得分:0)

试试这个:

   $.ajax({
     type: "POST",
     url: "myfile.php",
     data: $('form').serialize(),
     success: function (value) {
         $("#mydata").html(value);
     }
 });

而不是

$num=$_POST['num0'] 

使用

$num=filter_input(INPUT_POST,'num0');

答案 1 :(得分:0)

使用输入字段的name属性,您可以在$_POST中创建一个数组:

<form method="post">
    <select name="values[num0]">
        <option value="">num0</option>
        <option value="12">12</option>
        <option value="13">13</option>
    </select>
    <select name="values[num1]">
        <option value="">num2</option>
        <option value="123">123</option>
        <option value="133">133</option>
    </select>
    <select name="values[num2]">
        <option value="">num3</option>      
        <option value="12345">12345</option>
    </select>
</form>

在你的php中你可以像这样使用它:

$postarr = $_POST['values'];
echo $postarr['num0'];

答案 2 :(得分:0)

在表单中添加ID

  <form id="my_form">
<select name="num0">
    <option value="">num0</option>
    <option value="12">12</option>
    <option value="13">13</option>
</select>
<select name="num1">
    <option value="">num2</option>
    <option value="123">123</option>
    <option value="133">133</option>
</select>
<select name="num2">
    <option value="">num3</option>      
    <option value="12345">12345</option>
</select>

只需改变

  var str = $("#my_form").serialize();

在你的剧本中