如何使用$ _POST通过AJAX和Jquery传递数据?

时间:2015-02-25 19:47:12

标签: php jquery ajax

您好我正在尝试使用Ajax和Jquery将简单的html数据传递到php服务器。所以我制作了一个非常简单的剧本:

 <script>
      $("document").ready(function(){
        $(".enviarJson").on("click",function(){
            var valor = $(this).attr("value");
           // alert(valor);
            $.ajax({
              type: "POST",
              dataType: "HTML",
              url: "devolve.php",
              data: valor,
              success: function(data) {
                 alert(data);
              }
            });
            return false;
        });
      });
    </script>

这是html:

    <form>
    <button class="enviarJson" value="q1?a1">Answer 1</button>
    <button class="enviarJson" value="q1?a2">Answer 2</button>
    </form>

现在我的问题是如何将数据传递给 devolve.php 而不知道$ _POST []的id是什么?

例如,使用常规的帖子形式,我可以这样做:

<form action="devolve.php" method="post">
Name: <input type="text" name="name"><br>
<input type="submit">
</form>

然后我可以通过这样的方式得到devolve.php上的名字:

<?php
  $name = $_POST['name'];
?>

2 个答案:

答案 0 :(得分:3)

您还没有为POST数据命名。它只是一个裸值,这意味着PHP没有什么可以用作$ _POST中的键:

data: valor,
      ^---no name

尝试

data: {name:valor},

可以让您使用$_POST['name']

或者,您可以阅读原始POST数据:

$name = file_get_contents('php://input');

答案 1 :(得分:0)

使用.serialize() -

$(".enviarJson").on("click",function(){
        var valor = $('form').serialize(); // serializes all of the form data in name / value pairs
       // alert(valor);
        $.ajax({
          type: "POST",
          dataType: "HTML",
          url: "devolve.php",
          data: valor,
          success: function(data) {
             alert(data);
          }
        });
        return false;
    })

如果您在页面上有多个表单的情况下给表单提供某种身份证明,那会更好。