Ajax表单提交以PHP格式接收

时间:2012-07-13 07:59:00

标签: php mysql ajax forms

我正在遇到一些我正在制作的表格的问题。我有代码将表单发布到我的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)。

3 个答案:

答案 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'。