Я хочу опубликовать форму с двумя полями на странице php, используя $ _POST [‘json’]; объект будет иметь тип json. Вы можете мне помочь?
<div id="result"></div>
<form name="form" id="form" method="post" >
Name: <input type="text" name="name" id="name"/><br/>
Number: <input type="text" name="number" id="number"/><br/>
<input type="button" value="Submit!" name="submit" id="submit"/>
</form>
Если вы пытаетесь отправить json по почте, вам нужно написать скрипт, используя js или jquery
бросать JSON.stringify(values)
в вашу функцию. Вы можете быстро получить данные формы с помощью var values = $("form").serialize();
,
Я думаю, что вы действительно спрашиваете, что Ajax или PHP возвращают json … Этот пример должен охватывать оба сценария с некоторыми изменениями.
index.php
<?
$name = isset($_POST["name"]) ? $_POST["name"] : "";
$number = isset($_POST["number"]) ? $_POST["number"] : "";
$fromAjax = isset($_POST["ajax"]) ? $_POST["ajax"] : NULL;
if($name != "" || $number != ""){
$results = array(
'name' => $name,
'number' => $number
);
$resultFromPHP = json_encode($results);
}
?>
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<div id="resultfromphp" style="border: 1px solid;width:300px;height:25px; ">
<? echo isset($resultFromPHP) ? $resultFromPHP : ""; //if result is set, echo it, else empty?>
</div>
<br>
<div id="resultfromajax" style="border: 1px solid;width:300px;height:25px;">
</div>
<hr>
<form name="form" id="form" method="post" >
Name: <input type="text" name="name" id="name"/><br/>
Number: <input type="text" name="number" id="number"/><br/>
<input type="submit" value="PHP Submit!" name="php_submit" id="php_submit"/>
<input type="button" value="AJAX Submit!" name="ajax_submit" id="ajax_submit"/>
</form><script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script src="submit.js"></script>
</body>
</html>
для метода php вы помещаете код php в сам документ и отправляете себя. вы можете использовать include для разделения кода. Используя отправку html, вы не можете преобразовать данные формы перед отправкой. То, что я написал сверху, должно охватывать это. что произойдет здесь — данные будут отправлены почтой и конвертированы в json.
Метод ajax почти такой же, однако, поскольку вы используете jquery с этой частью, вы можете сначала создать json, отправить и получить обратно json.
submit.js
$().ready(function(){
$("#ajax_submit").on("click", function(){
sendSomeAjax();
});
});
var sendSomeAjax = function(){
var sendData = $("form").serialize();
$.ajax({
url: "submit.php",
type: "post",
data: sendData,
success: function(data){
$("#resultfromajax").html(data);
},
error: function(data){
$("#resultfromajax").html("There was an error.");
}
});
};
submit.php
<?php
$name = isset($_POST["name"]) ? $_POST["name"] : "";
$number = isset($_POST["number"]) ? $_POST["number"] : "";
$fromAjax = isset($_POST["ajax"]) ? $_POST["ajax"] : NULL;
if($name != "" || $number != ""){
$results = array(
'name' => $name,
'number' => $number
);
echo json_encode($results);
}
Других решений пока нет …