接收AJAX POST的PHP是空的

时间:2018-01-24 18:57:00

标签: php jquery ajax

我尝试使用AJAX登录。 AJAX函数将数据发布到PHP文件,但是当我尝试在PHP中从POST检索数据时,它是空的。

这是我的AJAX发布代码:

function validateUser() {
  var userR = $("#fldUser").val();
  var passwordR = $("#fldPassword").val();
  if (userR.length < 1) {
    $("#divStatusText").html("<p class=\"text-danger\"> <b>A user is required.</b></p>");
  } else if (passwordR.length < 1) {
    $("#divStatusText").html("<p class=\"text-danger\"><b>A password is required.</b></p>");
  } else {
    // alert(userR + passwordR)
    $.ajax({
      type: 'POST',
      // url: '/_Controlador/_GSystemLogIn.php/',
      url: '/_Controlador/_GSystemLogIn.php',
      // data:'user=' + userR +'&password=' + passwordR,
      data: {
        'user': userR,
        'password': passwordR
      },
      dataType: 'JSON',
      beforeSend: function(xhr) {
        alert("En before send: " + userR + passwordR);
      },
      success: function(data) {
        alert(data);
        if (data.message === "Success") {
          // location.href = "main.php";
        } else {
          $("#divStatusText").html("<p class=\"text-danger\"><b>User or password is incorrect.</b></p>");
          $("#fldUser").val("");
          $("#fldPassword").val("");
        }
      },
      error: function(data) {
        alert("Error in AJAX call.");
      }
    });
  }
}

PHP代码检索数据:

var_dump($_POST);

$user = $_POST['user'];
$password = $_POST['password'];

echo( "PHP user received: ". $user);
echo( "PHP pass received: ".$password);

AJAX beforeSend中的警报正确打印数据,但var_dump($_POST)打印:

  

array(0){}

我也尝试了不同的方式来发送数据和网址。我非常感谢你的帮助。谢谢!

2 个答案:

答案 0 :(得分:0)

在你的ajax请求中,

type: 'POST'必须为method: 'POST'

查看here

答案 1 :(得分:-1)

您必须先解码数据。 只是做 -

$_POST = json_decode(file_get_contents('php://input'), true);

以下是完整的解释 - https://stackoverflow.com/a/39508364/5400741