我有一个 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 文件现在可以读取 lastName
、firstName
和 middleName
,但我认为它不是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/