我正在遇到一些我正在制作的表格的问题。我有代码将表单发布到我的PHP脚本,该脚本旨在使用以下代码处理数据:
<script type="text/javascript">
$(document).ready(function()
{
$("#submit").click(function()
{
var q1 = $("#q1").val();
var q2 = $("#q2").val();
var answers = "page=1&q1="+q1+"&q2="+q2;
$.ajax({
type:'POST',
url:'add.php',
data:answers,
success:function(response)
{
$("#answers").html(response);
}
});
});
});
</script>
然后在我的PHP脚本中收到此表单,如下所示:
$page = $_POST['page'];
$q1 = $_POST['q1'];
$q2 = $_POST['q2'];
echo "Page: " .$page . "<br/>Question 1: " . $q1 . "<br/>Question 2: " . $q2;
这一切的问题是我希望这个表单能够处理X量的输入并处理输入我不知道的名称。就像我可以得到5个文本框,或2个文本框+一串radiobuttons等等。有没有办法收集所有$ _POST数据然后爆炸它或类似的东西,以便我可以为数据库做好准备?我希望恢复所有问题id(值)和所有答案值(可以是字符串或代表radiobutton id的int)。
答案 0 :(得分:4)
您可以通过简单地将POST和GET视为数组来迭代所有POST和GET请求参数。举个例子:
print_r($_POST);
可替换地:
foreach ($_POST as $key => $value) {
echo $key." = ".$value."<br>";
}
如果要处理不同数量的输入字段,可以定义递增的命名约定并使用循环将它们全部收集到数组中。
答案 1 :(得分:2)
with print_r($ _ POST);你可以看看所有的价值观。
或类似的东西:
foreach ( $_POST AS $key => $value) {
echo $key." => ".$value."<br>";
}
答案 2 :(得分:1)
首先:Let jQuery build your data string,您当前的方法要求您事先了解每个字段,并且无法处理其中包含特殊字符的数据。
url:'add.php',
data: $('#myForm').serialize(),
success:function(response)
第二步:使用具有相同名称约定的PHP多个字段命名您的字段:
<input type="radio" name="answer[1]" value="foo">
<input type="radio" name="answer[1]" value="bar">
然后您可以按以下方式访问它们:
$_POST['answer'][]
这是一个数组,所以你可以循环获得'1'和'foo'或'bar'。