【问题标题】:Retrieving POST Data from AJAX Call to PHP从 AJAX 调用中检索 POST 数据到 PHP
【发布时间】:2012-01-04 10:23:33
【问题描述】:

三天过去了,仍然无法让这些东西正常工作。 在发送 JSON 数据时,我的 js 文件上的这个 AJAX 调用似乎有效:

 var _lname = $('#ptLastName').val();
 var _fname = $('#ptFirstName').val();
 var _mname = $('#ptMiddleName').val();
 var _gender = $('#ptGender').val();
 var _bday = $('input[name="birthdate"]').val(); // $('#ptBirthDate').val();
 var _ssn = $('#ptSSN').val();

 $.ajax({
          type: "POST",
          url: ".././CheckPerson.php",
          data: "{'lastName':'" + _lname + "','firstName':'" + _fname + "','middleName':'" + _mname + "'}",
          contentType: "application/json; charset=utf-8",
          dataType: "json",
          success: function (response) {
          var res = response.d;
          if (res == true) {
               jAlert('Person Name already exists!', 'Error');
               return;
          } 
})

但在我的 PHP 文件中:

$lastname = json_decode($_POST['lastName']);
$firstname = json_decode($_POST['firstName']);
$middlename = json_decode($_POST['middleName']);
$response = array();

mysql_connect ("*****", "****") or die ('Error: ' . mysql_error());
mysql_select_db ("********");

$query = "SELECT Lastname, Firstname, MiddleName FROM tbl_people WHERE Lastname = '$lastname' || Firstname = '$firstname' || MiddleName = '$middlename'";

$result = mysql_query($query);

$row = mysql_fetch_array($result);

    if ($row) {     
        $response = json_encode(array('d' => true, 'test' => $lastname)); 
    }
    else { 
    $response = json_encode(array('d' => false, 'test' => $lastname));
    }
echo $response;
print json_encode($_POST);

萤火虫控制台的一些错误说:

<br />
<b>Notice</b>:  Undefined index: lastName in <b>C:\xampp\htdocs\..\CheckPerson.php</b> on line <b>2</b><br />
<br />
<b>Notice</b>:  Undefined index: firstName in <b>C:\xampp\htdocs\..\CheckPerson.php</b> on line <b>3</b><br />
<br />
<b>Notice</b>:  Undefined index: middleName in <b>C:\xampp\htdocs\..\CheckPerson.php</b> on line <b>4</b><br />
{"d":false,"test":null}[]

我相信 json_decode() 在我的 php 文件中工作正常,但 $_POST[''] 无法识别我发布的来自我的 ajax 调用 w/c 变量已声明的数据:

data: "{'lastName':'" + _lname + "','firstName':'" + _fname + "','middleName':'" + _mname + "'}",

我相信我的代码做得对,似乎我在这里阅读了很多问题并按照他们所说的做了,但不知道为什么会发生错误。 你有没有看到任何问题/错误?请告诉我。

【问题讨论】:

标签: php ajax json


【解决方案1】:

您可以使用 firebug 控制台查看 ajax 请求数据吗?

您无法从$_POST 获取姓氏和名字。它在 json 字符串中。首先,您必须使用

 $data = $_POST['data'] or $_REQUEST['data']

然后,使用json_decode() 解码$data 并访问您的属性。

json_decode($data);

【讨论】:

  • 我可以看到。它在 firebag 控制台上显示 json 数据。我认为 ajax 可以正常工作。我想把它的截图上传给你们看,但我的声誉很低,我有这个特权。 json 数据显示:firstName "inputtedfirstname" lastName "inputtedlastname" middleName "inputtedmiddlename" 但我的 php 文件无法使用 json_decode($_POST['lastName']) 获取这些值。你认为问题出在哪里。
  • 我试过了,但它也将“数据”作为未定义的索引返回。我真的不明白为什么 '$_POST' 无法获取发布的数据。我相信它甚至应该读取属性,但它没有。我真的在这里过得很糟糕。
  • $.post('.././CheckPerson.php', {data: dataString}, function(res){ });尝试使用此方法发送数据
  • 它只是工作。我现在可以访问我的 php 文件中的数据。但我想我现在必须删除我的 ajax 函数并重新开始编码,因为这些代码对我不起作用,或者我无法让它起作用。非常感谢。
  • 是的。我试过 $.post('.././CheckPerson.php', {data: dataString}, function(res){ });就像你说的那样。但是现在数据不是json数据。如果我可以在我的 php 文件中使用 ajax 返回的 json 数据,我仍在寻找方法,但我认为我很适合 $.post();目前。再次感谢您的帮助。
【解决方案2】:
$post = file_get_contents('php://input');

【讨论】:

  • 请在您的答案中添加一些解释,以便其他人可以从中学习
【解决方案3】:

而不是这个

data: "{'lastName':'" + _lname + "','firstName':'" + _fname +
"','middleName':'" + _mname + "'}",

使用这个

data: {lastName:_lname,firstName:_fname,middleName:_mname},

【讨论】:

  • 请在您的答案中添加一些解释,以便其他人可以从中学习
【解决方案4】:

试试这个解决方案

$lastname = isset($_POST['lastName'])?json_decode($_POST['lastName']):null; $firstname =isset($_POST['firstname'])?json_decode($_POST['firstname']):null; $middlename=isset($_POST['middlename'])?json_decode($_POST['middlename']):null;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-16
    • 2018-06-03
    • 1970-01-01
    • 2014-02-15
    • 1970-01-01
    相关资源
    最近更新 更多