У меня есть простая форма, которую я пытаюсь опубликовать с помощью 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);
Вам не нужно использовать 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
Вы можете внести некоторые изменения в свой скрипт и код 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) ""}
Это будет эффективнее, чем сериализация & Сериализовать много раз.