序列化表单并使用POST方法使用ajax发送序列化数据
I'm trying to serialize a form and send the serialized data with ajax using POST method ..
index.php
<form id ="form" class = "form">
<input type = "text" name = "name" />
<input type = "number" name = "age" />
<input type = "number" name = "id" />
<input type = "submit" name = "submit"><br/>
</form>
<p id = "result"></p>
Jquery snippets
<script>
$(document).ready(function(){
$("#form").submit(function(){
var data = $("#form").serialize();
insertStudent(data);
return false ;
});
function insertStudent(data){
$.post("process.php" , { data : data} , function(str){
$("#result").html(str);
});
}
});
</script>
process.php
$ret = $_POST["data"];
echo "<br />".$ret["name"];
And now , the result is :
Notice: Undefined index: name in C:\xampp\htdocs\try.php on line 3
When i tried to echo $_POST["data"] the result is :
name=Ahmed&age=111&id=222
how can i use every name individually such as : $_POST["name"] ... $_POST["age"] ... $_POST["id"] ?
function insertStudent(data){
$.ajax({
url: 'process.php',
data: data,
type: 'POST',
dataType: 'json',
success: function(str){
$("#result").html(str);
}
});
}
And then print $_POST in your PHP file :)
The problem is in the way you send the data to the server:
{data: data}
turns your serialised data into one parameter in stead of a series of parameters, that serialize() collects. Just change it to:
data
EDIT (added explicit example): The following (and the above) works. If it does not work for you, you have other errors in your php code.
index.php:
<?php
echo '<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<script>
$(document).ready(function(){
$("#form").submit(function(){
var data = $("#form").serialize();
insertStudent(data);
return false ;
});
function insertStudent(data){
$.post("process.php" , data , function(str){
$("#result").html(str);
});
}
});
</script>
</head>
<body>
<p>test of form</p>
<form id ="form" class = "form">
<input type = "text" name = "name" />
<input type = "number" name = "age" />
<input type = "number" name = "id" />
<input type = "submit" name = "submit"><br/>
</form>
<p id="result"></p>
</body>
</html>';
?>
process.php:
<?php
print_r($_POST);
echo "<br/>";
foreach($_POST as $key=>$value){
echo $key.": '".$value."'<br/>";
}
?>
results in the output:
Array ( [name] => Whatevernameyoutype [age] => whateverageyoutype [id] => whateveridyoutype )
name: 'Whatevernameyoutype'
age: 'whateverageyoutype'
id: 'whateveridyoutype'
Instead of the loop, you can access any of the posted parameters with $_POST["KEYNAMEHERE"];