使用jquery ajax json发送表单数据

时间:2015-06-06 08:16:12

标签: javascript php jquery ajax json

我是PHP / jquery的新手 我想问一下如何使用json格式的ajax从表单字段(名称,年龄等)发送json数据。可悲的是,我找不到任何相关的信息,甚至可以动态地做到这一点? Google搜索仅返回手动构建数据等答案。例如:name: X Yage: 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>

4 个答案:

答案 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)

这里接受的答案的确是从表单生成j​​son,但是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,你可以做同样的事情,只是没有页面刷新。