从AJAX中检索POST数据调用PHP

时间:2011-11-23 03:15:15

标签: php ajax json

三天过去了,仍然有问题让这件事工作。 在发送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);

来自firebug控制台的一些错误说:

<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 + "'}",

我相信我正在使用我的代码似乎我在这里阅读了许多问题并完成了他们所说的但不知道错误发生的原因。 你看过有什么问题/错误吗?请告诉我。

4 个答案:

答案 0 :(得分:9)

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

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

获取数据
 $data = $_POST['data'] or $_REQUEST['data']

然后使用json_deocde解码$ data并访问您的属性。

json_decode($data);

答案 1 :(得分:6)

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

答案 2 :(得分:0)

代替此

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

使用此

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

答案 3 :(得分:0)

试试这个解决方案

$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;