AJAX没有在Laravel中调用控制器方法

时间:2016-05-02 17:50:45

标签: javascript php jquery ajax laravel

以下是我的刀片布局文件中的一些代码。在我的视图中多次调用此刀片文件,如@ include.layout("刀片文件链接")。当按下按钮时,我想调用我的控制器功能。这没有AJAX。但是,当我在混合中添加AJAX时,它不起作用。

以下是刀片布局文件中的代码

<div class="element1">
    <div class="text1">
        <form action="{{ route("progressSheetDynamic") }}" method="post" id="addActivity">
            <button type="submit" class="styleHover styleButton" name="increment" value="increment" > + </button>
            <input type="hidden" name="id" value= {{ $activities}}>
        </form>

        {{ $count  }} / {{  ($goal/5) }}
        <form action="{{route("progressSheetDynamic") }}" method="post" id="removeActivity">
            <button type="submit" class="styleHover styleButton" name="delete" value="delete"> - </button>
            <input type="hidden" name="id" value= {{ $activities }}>
        </form>
    </div>
</div>

这是我的routes.php文件中的代码。

Route::post(
    "progressSheetDynamic",
    [
        "as" => "progressSheetDynamic",
        "uses" => "tableController@addDeleteActivity"
    ]
);

Route::get("progressSheetDynamic", "tableController@getProgressSheetDynamic");

当我按下按钮addDeleteActivity在我的控制器中调用时,一切正常。现在,当我添加AJAX时,一切都崩溃了。

以下ajax的Javascript代码

<script>

$(document).ready(function(){
    $.ajaxSetup({
        headers: {'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')}
    });
});

$('#addActivity').submit(function(e){
    e.preventDefault();
    var data = $(this).serialize();
    $.post('progressSheetDynamic', data).done(function(response){
        console.log(data);
    });
});

$('#removeActivity').submit(function(e) {
    e.preventDefault();
    var data = $(this).serialize();
    $.post('progressSheetDynamic', data).done(function(response){
        console.log("deleting");
    });
}); 
</script>

console.logs在两个按钮的$ .post函数内部工作。但是,控制器中的addDeleteActivity函数不再被调用。

1 个答案:

答案 0 :(得分:0)

要确保网址相同,您可以设置相同的方式,无需使用AJAX,

试试这个:

$('#addActivity').submit(function(e){
    e.preventDefault();
    var data = $(this).serialize();
    $.post('{{ route("progressSheetDynamic")' }}, data).done(function(response){
        console.log(data);
    });
});