php $ _POST不工作,但$ _GET是

时间:2014-10-16 15:57:05

标签: php jquery ajax

我已经提交了我的表格。我已尝试使用ajax和常规提交($.post()$.get()method="post"method="get")。

当我使用任何一个获取时,我可以使用$_GET获取数据,但使用任一帖子都不会填充$_POST变量。

任何建议都会很棒。我需要开始工作,因为我不喜欢使用get来做密码之类的事情。

修改

POST:

<form method="post" action="<?php htmlspecialchars($_SERVER["PHP_SELF"]); ?>"> <input type="text" name="some_input" value=""> <input type="submit" name="submit"> </form>

<?php 
if (isset($_POST["some_input"])) echo $_POST["some_input"];
?>

或者

GET:

<form method="get" action="<?php htmlspecialchars($_SERVER["PHP_SELF"]); ?>"> <input type="text" name="some_input" value=""> <input type="submit" name="submit"> </form>

<?php
if (isset($_GET["some_input"])) echo $_GET["some_input"];
?>

第一个没有显示任何内容。

第二个显示我输入的内容。

编辑2:

以下代码可以使用并填充我的$_POST

<?php
print "CONTENT_TYPE: " . $_SERVER['CONTENT_TYPE'] . "<BR />";
$data = file_get_contents('php://input');
print "DATA: <pre>";
var_dump($data);
var_dump($_POST);
var_dump($_SERVER["PHP_SELF"]);
print "</pre>";
?>
<form method="post" action="<?php $_SERVER["PHP_SELF"]; ?>">

    <input type="text" name="name" value="ok" />
    <input type="submit" name="submit" value="submit" />

</form>

结果:

CONTENT_TYPE: application/x-www-form-urlencoded
DATA:
string(21) "name=ok&submit=submit"
array(2) {
  ["name"]=>
  string(2) "ok"
  ["submit"]=>
  string(6) "submit"
}
string(37) "/path/to/test-post.php"

奇怪的是,action="<?php $_SERVER["PHP_SELF"]; ?>"或根本没有任何行动就可以了,但action="test-post.php"action="/path/to/test-post.php"都没有。

结果破碎:

CONTENT_TYPE: 
DATA:
string(0) ""
array(0) {
}
string(37) "/path/to/test-post.php"

4 个答案:

答案 0 :(得分:2)

我仍然不太确定是什么原因导致它,但我发现如果我使用相对路径发出请求,那么我必须省略文件扩展名。例如action="test-post"代替action="test-post.php"

如果我通过get($_GET)发送文件扩展名似乎适用于$_REQUESTmethod="get",但$_POST$_REQUEST不是如果我通过邮寄(method="post")发送它。

<强> 修改

这与.htaccess文件有关。我对这个文件了解不多,所以我不确切知道是哪个位导致了这个问题。

答案 1 :(得分:0)

您可以尝试使用$_REQUEST代替$_POST查看类似问题:

PHP $_POST not working?

答案 2 :(得分:0)

这是一个如何使用post制作表单并处理它的示例。 请注意,您可以将操作留空(然后它将保留在同一个URL上)。

<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
  if (isset($_POST["some_input"])) {
    echo $_POST["some_input"];
  }
}
?>
<form method="post" action="">
  <input type="text" name="some_input" value="">
  <input type="submit" name="submit">
</form>

答案 3 :(得分:0)

以下是使用POST提交AJAX的提交示例:

HTML:

<form id="form" name="form">
<h3>Fill Your Information!</h3>
<div>
<label>Name :</label>
<input id="name" type="text">
<label>Email :</label>
<input id="email" type="text">
<label>Password :</label>
<input id="password" type="password">
<label>Contact No :</label>
<input id="contact" type="text">
<input id="submit" onclick="myFunction()" type="button" value="Submit">
</div>
</form>

Javascript:

jQuery(document).ready(function(){
    $('#form').submit(function(e){
      var emailVal = $('#email').val();
       e.preventDefault();
       $.ajax({
          type: "POST",
          url: "thePHPfile.php",
          data: 'data': emailVal ,         
          success: function(html) {
              alert(html);
          }
       });
    });
});

PHP:

 <?php
        if(isset($_POST['data']){
          echo $_POST['data'];
        }
    ?>