Как десериализовать данные JSON в серверной части

У меня есть простая форма, которую я пытаюсь опубликовать с помощью jQuery post в формате JSON. Форма получает сообщение, но моя проблема в части PHP. Я не могу получить данные. Из другого вопроса стека я нашел решение просто делать $_POST['FirstName'] но я получаю результат как "FirstName=john&LastName=plar&Address=home&PhoneNumber=23423423".

Как я могу декодировать эти данные JSON? Ниже приведен код, который я пробовал до сих пор. Спасибо.

<form action="user.php" method="post" id="myForm">
First Name: <input type="text" name="FirstName" />
Last Name: <input type="text" name="LastName" />
Address: <input type="text" name="Address" />
Phone: <input type="text" name="PhoneNumber" />
<input type="submit" id="submit" value="Submit"/>
</form>

<script>
$("#submit").on('click', function(e){
e.preventDefault();
var data = $("#myForm input").serialize();
$.post('user.php',{"data":JSON.stringify(data)},function(data){

},'json');

})
</script>

user.php

$object =$_POST['data'];
$array = json_decode($object);
print_r($object);

0

Решение

Вам не нужно использовать JSON вообще, просто сериализовать и загрузить форма.

$("#submit").on('click', function(e){
e.preventDefault();
$.post(
'user.php',
$("#myForm").serialize(),
function(data, textStatus){
// do stuff with the response
}
);
});

Тогда в вашем PHP

<?php
echo $_POST["FirstName"];
// etc
2

Другие решения

Вы можете внести некоторые изменения в свой скрипт и код PHP, чтобы получить собственные данные $ _POST, которые не нужно десериализовать:

Измените сценарий, чтобы опубликовать данные только в вашей сериализованной форме

$("#submit").on('click', function(e){
e.preventDefault();
$.post('user.php',{$("#myForm").serialize()},function(data){});
});

А в вашем PHP-коде просто сбросьте переменную $ _POST:

var_dump($_POST);

И вы можете получить этот результат:

array(4) {
["FirstName"]=>
string(7) "b j hhj"["LastName"]=>
string(7) "bhjbhj "["Address"]=>
string(5) "jhjjh"["PhoneNumber"]=>
string(0) ""}

Это будет эффективнее, чем сериализация & Сериализовать много раз.

1

По вопросам рекламы [email protected]