php - 为什么我不能在我的 PHP 文件中使用 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",
                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 参数,并为所有发布的参数返回一个 Undefined index: firstName in C:... 类似的东西。

我还尝试使用 $data = $_POST['data']$_REQUEST['data'] 获取所有 JSON 参数并使用 对其进行解码code>json_decode($data); 但没有成功。

我还在帖子中使用了 AJAX 缩短代码 $.post('.././CheckPerson.php', {data: dataString}, function(res){ }); ,它适用于我的 PHP 文件,我的 PHP 文件现在可以读取 lastNamefirstNamemiddleName,但我认为它不是JSON 数据,但只有文本数据,因为 Firebug 无法将其读取为 JSON 数据。现在,我很困惑我的 PHP 文件将如何读取 JSON 数据参数。你们对此有什么建议吗?

最佳答案

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

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

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

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

关于php - 为什么我不能在我的 PHP 文件中使用 AJAX 发布我的 JSON 数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8285451/

相关文章:

php - MySQL PHP 未将完整文件存储到 BLOB

php - 使用php清理html中的特殊字符

javascript - 非重复 jQuery Each 行为

jquery - 使用 daterangepicker 过滤数据表

javascript - 在悬停时使用 jQuery 显示时如何重叠 block 元素

php - jQuery ajax 在每个函数中发布,每个函数都成功继续

php - Docker:phpize找不到config.m4

php - 查询失败 您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册以获取正确的语法

javascript - ColdFusion 中的 AJAX 请求

在回调方法中使用 Javascript this Context