laravel ajax post序列化不起作用

时间:2017-06-18 16:13:31

标签: php jquery ajax laravel

                    <form id="sendmemessage">
                            <input type="hidden" name="csrf_token" value="{{ csrf_token() }}">
                            <div class="form-group">
                                <h2 class="open-f bbold green-text contact-t">SEND ME A MESSAGE!</h2>
                            </div>
                            <div class="form-group">
                                <input type="text" name="name" class="form-control input-sm no-radius" aria-describedby="emailHelp" placeholder="Name">
                            </div>
                            <div class="form-group">
                                <input type="text" name="email" class="form-control input-sm no-radius" placeholder="Email">
                            </div>
                            <div class="form-group">
                                <input type="text" name="subject" class="form-control input-sm no-radius" placeholder="Subject">
                            </div>
                            <div class="form-group">
                                <textarea class="form-control input-sm no-radius" name="message" rows="5" placeholder="Message"></textarea>
                            </div>
                            <div class="form-group">
                                <button type="submit" class="btn btn-custom pull-right btn-w">Send Message</button>
                            </div>
                            <br>
                    </form>

我试图对形式的值进行修改,我知道这只是基本但我不知道为什么不工作。

下面是我的ajax,

$("#sendmemessage").submit(function(stay){
    $.ajax({
        type: 'POST',
        url: "{{ url('/') }}/message_me",
        data: $(this).serialize(),
        success: function (data) {
           alert();
        },
    });
    stay.preventDefault(); 
});

我的路线

Route::post('message_me','home_controller@message_me');

我的控制器

class home_controller extends Controller{

    public function message_me(){

        echo "its here!";

    }

}

这是我的表单详细信息代码

2 个答案:

答案 0 :(得分:1)

$(this).serialize()在ajax对象中,它引用的是ajax而不是表单。

$("#sendmemessage").submit(function(stay){
   var formdata = $(this).serialize(); // here $(this) refere to the form its submitting
    $.ajax({
        type: 'POST',
        url: "{{ url('/') }}/message_me",
        data: formdata, // here $(this) refers to the ajax object not form
        success: function (data) {
           alert();
        },
    });
    stay.preventDefault(); 
});

答案 1 :(得分:0)

从替换开始

<input type="hidden" name="csrf_token" value="{{ csrf_token() }}">

使用辅助函数

{!! csrf_field() !!}

我按照以下方式构建我的ajax调用:

$("#sendmemessage").on('submit', function(e) {
    e.preventDefault();
    var data = $("#sendmessage").serialize();
    $.ajax({
        type: "post",
        url: "/message_me",
        data: data,
        dataType: "json",
        success: function(data) {
            console.log('success');
        },
        error: function(error) {
            console.log('error');
        }
    });
});

您可以通过浏览器访问“message_me”路线吗? 500内部服务器错误应该可以让您清楚地了解请求失败的原因。