简体   繁体   English

AJAX未在Laravel中调用控制器方法

[英]AJAX is not calling controller method in Laravel

Here is some code that I have in my blade layout file. 这是我的刀片布局文件中包含的一些代码。 This blade file is called several times in my view like this @include.layout("blade file link"). 在我看来,此刀片文件被多次调用,例如@ include.layout(“ blade file link”)。 When a button is pressed I would like my controller function to be called. 当按下按钮时,我希望调用我的控制器功能。 This works without AJAX. 这在没有AJAX的情况下有效。 However, when I add AJAX to the mix it does not work. 但是,当我将AJAX添加到混合中时不起作用。

Below is the code in the blade layout file 以下是刀片布局文件中的代码

<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>

Here is the code in my routes.php file. 这是我的routes.php文件中的代码。

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

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

Everything is working up to this point, when I press a button addDeleteActivity function is called in my controller. 至此,一切正常,当我按下按钮时,在控制器中调用了addDeleteActivity函数。 Now when I add in the AJAX everything falls apart. 现在,当我添加AJAX时,一切都会崩溃。

Javascript code with ajax below 下面带有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>

The console.logs work inside the $.post function for both buttons. console.logs在两个按钮的$ .post函数内部工作。 However, the addDeleteActivity function in the controller is no longer getting called. 但是,不再调用控制器中的addDeleteActivity函数。

To make sure the URL is the same, you can set same way you're doing without AJAX, 为确保网址相同,您可以设置不使用AJAX的方式,

Try this: 尝试这个:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM