我是PHP / jquery的新手
我想问一下如何使用json格式的ajax从表单字段(名称,年龄等)发送json数据。可悲的是,我找不到任何相关的信息,甚至可以动态地做到这一点? Google搜索仅返回手动构建数据等答案。例如:name: X Y
,age: 32
等。
有没有这样做?
感谢您的帮助!
编辑:
<form action="test.php" method="post">
Name: <input type="text" name="name"><br>
Age: <input type="text" name="email"><br>
FavColor: <input type="text" name="favc"><br>
<input type="submit">
</form>
答案 0 :(得分:19)
这是一个简单的
这是我的test.php仅用于测试
<?php
// this is just a test
//send back to the ajax request the request
echo json_encode($_POST);
这是我的index.html
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<form id="form" action="" method="post">
Name: <input type="text" name="name"><br>
Age: <input type="text" name="email"><br>
FavColor: <input type="text" name="favc"><br>
<input id="submit" type="button" name="submit" value="submit">
</form>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script>
$(document).ready(function(){
// click on button submit
$("#submit").on('click', function(){
// send ajax
$.ajax({
url: 'test.php', // url where to submit the request
type : "POST", // type of action POST || GET
dataType : 'json', // data type
data : $("#form").serialize(), // post data || get data
success : function(result) {
// you can see the result from the console
// tab of the developer tools
console.log(result);
},
error: function(xhr, resp, text) {
console.log(xhr, resp, text);
}
})
});
});
</script>
</body>
</html>
两个文件都放在同一目录中
答案 1 :(得分:4)
您可以像这样使用import org.simpleframework.xml.Element;
public class Queue {
@Element
private String rate;
@Element
private String name;
@Element(name = "retry-parameters")
private RetryParameters retryParameters;
public String getRate() {
return rate;
}
public String getName() {
return name;
}
public RetryParameters getRetryParameters() {
return retryParameters;
}
}
:
import org.simpleframework.xml.Element;
public class RetryParameters {
@Element(name = "min-backoff-seconds")
private String minBackoffSeconds;
@Element(name = "max-backoff-seconds")
private String maxBackoffSeconds;
@Element(name = "max-doublings")
private String maxDoublings;
@Element(name = "task-retry-limit")
private String taskRetryLimit;
public String getMinBackoffSeconds() {
return minBackoffSeconds;
}
public String getMaxDoublings() {
return maxDoublings;
}
public String getMaxBackoffSeconds() {
return maxBackoffSeconds;
}
public String getTaskRetryLimit() {
return taskRetryLimit;
}
}
答案 2 :(得分:3)
这里接受的答案的确是从表单生成json,但是json的内容实际上是带有url编码内容的字符串。
要进行更现实的JSON POST,请使用Serialize form data to JSON中的一些解决方案以使formToJson
函数并将contentType: 'application/json;charset=UTF-8'
添加到jQuery ajax调用参数中。
$.ajax({
url: 'test.php',
type: "POST",
dataType: 'json',
data: formToJson($("form")),
contentType: 'application/json;charset=UTF-8',
...
})
答案 3 :(得分:0)
通过POST方法可以将表单字段中的数据发送回服务器(php),这可以在PHP内部的超全局数组$ _POST中找到。在将其发送到服务器之前,无需将其转换为JSON。小例子:
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
echo '<pre>';
print_r($_POST);
}
?>
<form action="" method="post">
<input type="text" name="email" value="joe@gmail.com" />
<button type="submit">Send!</button>
使用AJAX,你可以做同样的事情,只是没有页面刷新。