0

我有一个如下所示的 HTML 表单:

<form class="form-horizontal" id="create_user" method="POST" action="#" accept-charset="UTF-8">
    <span>Username</span><input required="true" type="text" name="username" id="username">

    <span>E-mail</span><input type="email" name="email" id="email">

    <span>Privileges</span><select id="role" name="role"><option value="1">Administrator</option><option value="2">Employee</option><option value="3">Dealer</option></select>

    <span>Password</span><input type="password" name="password" id="password">

    <span>Repeat Password</span><input type="password" name="repeat_password" id="repat_password">

    <input class="btn-primary btn" type="submit" value="Submit">

    <input class="btn-inverse btn" type="reset" value="Reset">
</form>

我正在尝试使用 AJAX 将数据发送到服务器,如下所示:

$("form").submit(function(){

            var form_data = $(this).serialize();

            var request = $.ajax({
                url: "user/validate",
                type: "POST",
                data: form_data 
            });
            request.done(function (response, textStatus, jqXHR){
                alert(response);//Comes back blank
            })
            // callback handler that will be called on failure
            request.fail(function (jqXHR, textStatus, errorThrown){
                // log the error to the console
                console.error(
                    "The following error occured: "+
                    textStatus, errorThrown
                );
            });
        });

编辑:这是我处理 POST 数据的 Laravel 控制器:

class User_Controller extends Base_Controller {

    public function post_validate() {
        return Input::get('username');
    }

}

但是,不会使用 发送数据$(this).serialize()。如果我通过执行以下操作单独传递每个元素:$("#username").val(),它工作正常。我确保我的所有表单输入都有名称,但它仍然不起作用。

4

3 回答 3

1

我认为您的页面会刷新:

$("form").submit(function(e){
     e.preventDefault(); //<-----try adding this 
于 2013-02-07T18:44:10.327 回答
1

我已经对其进行了测试,但我认为您的问题不在于序列化数据。

这是一个 jsFiddle:http: //jsfiddle.net/6nd5K/

您应该通过检查 serialise在进入 AJAX 方法之前是否执行任何操作来进行测试。

$('form').submit(function() {
    alert($(this).serialize());
    return false;
});

我认为您的问题在于处理数据的任何方式。

于 2013-02-07T18:44:11.707 回答
0
$(".btn-primary").on(click, function(){

        var request = $.ajax({
            url: "/user/validate",
            type: "POST",
            data: $('form#create_user').serialize(),
            async: false

        });
        request.done(function (response, textStatus, jqXHR){
            alert(response);//Comes back blank
        })
        // callback handler that will be called on failure
        request.fail(function (jqXHR, textStatus, errorThrown){
            // log the error to the console
            console.error(
                "The following error occured: "+
                textStatus, errorThrown
            );
        });
    });
于 2013-02-07T19:15:39.993 回答