为什么我不能在我的PHP文件中使用AJAX发布我的JSON数据?

Noe*_*rez 5 php ajax jquery json

我有一个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;
                    }
Run Code Online (Sandbox Code Playgroud)

它运行正常,我可以看到Firebug控制台中发布的JSON数据.问题出在这个PHP代码上:

$firstname = json_decode($_POST['firstName']);
$lastname = json_decode($_POST['lastName']);
$middlename = json_decode($_POST['middleName']);
$response = array();
Run Code Online (Sandbox Code Playgroud)

上面的PHP代码看来它不能识别'firstName','lastName'以及'middleName'作为发布JSON参数,并返回一个Undefined index: firstName in C:...类似的东西,所有的发布参数.

我也尝试使用$data = $_POST['data']$_REQUEST['data']获取所有JSON参数并使用它解码json_decode($data);但不起作用.

我还用于后的AJAX代码缩短$.post('.././CheckPerson.php', {data: dataString}, function(res){ });,它的伟大工程与我的PHP文件和我的PHP文件现在可以读取lastName,firstName以及middleName,但我认为它不是一个JSON数据,但只有一个文本数据,因为萤火虫无法读取它作为JSON数据.现在,我很困惑我的PHP文件将如何读取JSON数据参数.你们有什么建议吗?

fle*_*esk 7

问题是,dataType: "json"这并不意味着您发布了json,而是因为您的请求而希望从服务器接收json数据.您可以将帖子数据更改为:

data: {myPostData : "{'lastName':'" + _lname + "','firstName':'" + _fname + "','middleName':'" + _mname + "'}"}
Run Code Online (Sandbox Code Playgroud)

然后在你的服务器上解析它

$myPostData = json_decode($_POST['myPostData']);
$firstname = $myPostData["firstName"];
$lastname = $myPostData["lastName"];
$middlename = $myPostData["middleName"];
Run Code Online (Sandbox Code Playgroud)