为什么可以';我不能在PHP文件中使用AJAX发布JSON数据吗?

为什么可以';我不能在PHP文件中使用AJAX发布JSON数据吗?,php,jquery,ajax,json,Php,Jquery,Ajax,Json,我有一个AJAX脚本,可以在我的一个PHP文件中发布数据: var _lname = $('#ptLastName').val(); var _fname = $('#ptFirstName').val(); var _mname = $('#ptMiddleName').val(); $.ajax({ type: "POST", url: ".././CheckPerson.php",

我有一个AJAX脚本,可以在我的一个PHP文件中发布数据:

     var _lname = $('#ptLastName').val();
    var _fname = $('#ptFirstName').val();
    var _mname = $('#ptMiddleName').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;
                    }
它工作正常,我可以看到Firebug控制台中发布的JSON数据。问题在于此PHP代码:

$firstname = json_decode($_POST['firstName']);
$lastname = json_decode($_POST['lastName']);
$middlename = json_decode($_POST['middleName']);
$response = array();
上面的PHP代码似乎无法将
'firstName'
'lastName'
'middleName'
识别为已发布的JSON参数,并为所有已发布的参数返回类似的
未定义索引:C:…

我还尝试使用
$data=$\u POST['data']
$\u REQUEST['data']
获取所有JSON参数,并使用
JSON\u decode($data)对其进行解码但不起作用


我还为post
$.post('.././CheckPerson.php',{data:dataString},function(res){})使用了AJAX缩短代码
,它与我的PHP文件配合使用非常好,我的PHP文件现在可以读取
lastName
firstName
、和
middleName
,但我认为它不是JSON数据,而只是文本数据,因为firebug无法将其作为JSON数据读取。现在,我很困惑我的PHP文件将如何读取JSON数据参数。你们对此有什么建议吗?

一个问题-您正在对JSON使用单引号。您应该使用双引号(根据规范)


问题在于
dataType:“json”
并不意味着您正在发布json,而是您希望通过请求从服务器接收json数据。您可以将post数据更改为:

data: {myPostData : "{'lastName':'" + _lname + "','firstName':'" + _fname + "','middleName':'" + _mname + "'}"}
然后在服务器上解析它,就像

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