Intereting Posts
Как установить значение по умолчанию для столбца временной метки в текущую временную метку с миграциями Laravel? SyntaxError: отсутствует) после списка аргументов в динамическом полевом браузере В SimpleXML, как я могу добавить существующий SimpleXMLElement в качестве дочернего элемента? загрузить HTML \ PHP-страницы в div другой страницы Несовместимость PHP PHP Массовый экспорт данных из Codeignitor в CSV с использованием класса Utility Отсутствует учетная запись IUSR в Windows Server 2008 R2 / IIS7.5 Как обрабатывать загрузку файлов в распределенном приложении? редактор froala отлично работает Как перемещать маркер на 100 метров с координатами Есть ли какая-либо встроенная функция PHP, которая генерирует встроенное исключение? Запрос для отображения группы строк столбцов данных по значению данных в JSON из php Неверный параметр привязки PHP / MySQL / PDO не работает Распознаваемые числа с использованием PHP Более сжатое тернарное выражение?

Почему я не могу получить данные JSON, опубликованные с использованием AJAX в моем 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; } 

Он отлично работает, и я могу видеть данные JSON, размещенные в консоли Firebug. Проблема заключается в этом 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 и декодировать его с помощью json_decode($data); но не работает.

Я также использовал сокращенный код AJAX для post $.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"]; 

Одна проблема: вы используете одиночные кавычки для своего json. Вы должны использовать двойные кавычки (согласно спецификации).

 {"lastName":"Smith", "firstName":"Joe"} instead of {'lastName':'Smith', 'firstName':'Joe'}