如何在laravel中没有刷新页面的情况下发送数据?

时间:2017-12-15 11:57:03

标签: javascript html ajax laravel

我需要在不刷新页面的情况下将数据发送到数据库。

Home Blade:

<form class="chat" id="message" action="#" method="post">
    <input type="hidden" name="_token" id="_token" value="{{ csrf_token() }}">
    <li>
        <div class="panel-footer">
            <div class="input-group">
                <input type="text" name="message" class="" placeholder="Type your message here..." />
                <span class="input-group-btn">
                    <button type="submit" class=" btn-success btn-sm searchButton" id="save" >
                    Send
                    </button>
                </span>
            </div>
        </div>
    </li>
</form>

控制器:

public function message(Request $data)
{
    $ins = $data->all();
    unset($ins['_token']);
    $store = DB::table("chatbox")->insert([$ins]);
    return Redirect('Users/home')->with('message',"success");
}

Ajax:

<script>
$(document).on("click", ".save", function() {
    $.ajax({
        type: "post",
        url: '/Users/message',
        data: $(".message").serialize(),
        success: function(store) {

        },
        error: function() {
        }
    });
});
</script>

目前,当我发送数据时,它会自动刷新整个页面,但只需要刷新特定的表单。

4 个答案:

答案 0 :(得分:2)

您应该将按钮的类型从submit更改为button,如:

<button type="button" class=" btn-success btn-sm searchButton" id="save" >end</button>

或使用submit阻止默认操作(e.preventDefault();),如:

$(document).on("click",".save",function(){
    e.preventDefault(); //Prevent page from submiting
    ...
    ...
}); 

注意:另请注意,您没有包含save类但ID为save的按钮,因此事件处理程序应如下所示:

$(document).on("click", "#save", function(){
________________________^

答案 1 :(得分:2)

您必须在javascript / jquery表单submit功能中处理函数,并使用e.preventDefault()停止HTML以提交表单。

请尝试以下代码类型中的ajax代码。

$('#message').submit(function(e) {
    e.preventDefault();
    //your ajax funtion here
});

您可以在成功功能中重置/刷新表单

 $("#message").trigger("reset");

答案 2 :(得分:1)

您需要阻止默认表单提交,而是使用脚本

$(document).on("click", "#save", function(e) {

    e.preventDefault(); // Prevent Default form Submission

    $.ajax({
        type:"post",
        url: '/Users/message',
        data: $("#message").serialize(),
        success:function(store) {
            location.href = store;
        },
        error:function() {
        }
    });

});

而不是返回重定向,从控制器返回url并让脚本处理重定向

public function message(Request $data)
{
    $ins = $data->all();
    unset($ins['_token']);
    $store = DB::table("chatbox")->insert([$ins]);
    session()->flash('message', 'success');
    return url('Users/home');
}

答案 3 :(得分:0)

删除return Redirect('Users/home')->with('message',"success");并返回一个类似

的数组
return ['message' => 'success'];