【发布时间】:2014-03-25 16:30:06
【问题描述】:
我尝试使用 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(其他变量的消息相同)。
顺便说一句,英语不是我的母语;请原谅打字错误。
【问题讨论】:
-
我不知道这是否相关,但你的
<form>标签需要一个方法。由于它不是正确的 HTML,因此序列化可能无法正常工作。 -
使用
$("form").serialize(),而不是$("form").serializeArray();,见stackoverflow.com/a/10430571/689579 -
您是否尝试使用
print_r($_REQUEST);进行调试? -
@SableFoste:
method和action是可选的。默认情况下,表单将通过 GET 提交到当前页面。 -
对我来说很好:jsfiddle.net/XN6aJ(检查请求的标头)