【问题标题】:Ajax Form submit receiving in PHPAjax 表单提交在 PHP 中接收
【发布时间】:2012-07-13 01:31:24
【问题描述】:

我在制作表单时遇到了一些问题。我有代码可以将表单发布到我的 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 个文本框 + 一串单选按钮等等。有没有办法收集所有 $_POST 数据然后分解它或类似的东西,以便我可以为数据库做好准备?我希望恢复所有问题 id(值)和所有答案值(可以是表示单选按钮 id 的字符串或 int)。

【问题讨论】:

  • 使用 Ajax 提交表单这一事实似乎与问题无关。
  • 抱歉,不确定是不是这样。安全总比后悔好。然而,我确实发现我的 ajax 功能还不够,所以还不错。
  • 另外,如果有人能告诉我这个问题出了什么问题,我会尽力不再犯同样的错误。

标签: php mysql ajax forms


【解决方案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”。

【讨论】:

  • 神奇!奇迹般有效。非常感谢。
【解决方案2】:

使用 print_r($_POST);您可以查看所有值。

或类似的东西:

foreach ( $_POST AS $key => $value) {
echo $key." => ".$value."<br>";
}

【讨论】:

    【解决方案3】:

    您可以通过简单地将 POST 和 GET 视为一个数组来遍历所有 POST 和 GET 请求参数。举个例子:

    print_r($_POST);
    

    或者:

    foreach ($_POST as $key => $value) {
        echo $key." = ".$value."<br>";
    }
    

    如果您想处理不同数量的输入字段,您可以定义递增的命名约定并使用循环将它们全部收集到一个数组中。

    【讨论】:

    • @TimoDörsching 我会给你的答案竖起大拇指! :D
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-03
    • 1970-01-01
    • 2014-02-14
    • 2011-10-03
    • 2011-07-20
    相关资源
    最近更新 更多