我尝试使用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(和其他变量的消息相同)。
顺便说一句,英语不是我的母语;请原谅输入错误。
答案 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();
在你的剧本中