Laravel 5.1 Ajax调用'Like'系统没有发生

时间:2015-10-30 11:54:57

标签: php mysql ajax laravel laravel-5.1

我正在构建一个用户可以上传项目的应用程序。我正在实现一个用户可以“喜欢/不喜欢”其他项目的系统。我正在尝试使用AJAX调用来保存喜欢。用户可以在项目的详细信息页面上喜欢项目(/ projects / {id})

我有一个表用户,项目和喜欢。我的计划是将喜欢的表保存在喜欢的表中,这样一条记录看起来像这样:id,user_id,project_id。在将来,我可以进行COUNT查询并找出每个项目有多少喜欢等等。

当我点击“赞”按钮时没有任何反应我没有发现任何错误,没有任何反应。

我的档案: routes.php文件

Route::get('/', 'LikeController@index');
Route::post('projects/{id}', 'LikeController@like');

LikeController.php:

public function like()
{
    if(Request::ajax()) {
        $data = Input::all();
        print_r($data);die;
    }
}

我的观点:show.blade.php

{!! Form::open(array('url'=>'projects/'.$project->id.'/like','method'=>'POST', 'id'=>'myform')) !!}
{!! Form::button('Like', array('class'=>'send-btn')) !!}
{!! Form::close() !!}

我的AJAX电话

<script type="text/javascript">
    $(document).ready(function(){
        $('.send-btn').click(function(){
            $.ajax({
                url: 'projects',
                type: "post",
                data: {'user_id': $('input[name=user_id]').val(), 'project_id': $('input[name=project_id]').val()},
                success: function(data){
                    alert(data);
                }
            });
        });
    });
</script>

3 个答案:

答案 0 :(得分:0)

在您的ajax功能中,您有一个选项url: 'projects'。这意味着您的ajax调用将被发送到相对projects路径。要解决此问题,请将其更改为url: '/projects'

此外,您的路线还包含项目projects/{id}的ID,因此您必须将其添加到您的ajax呼叫选项中。

$('.send-btn').click(function(){
    $.ajax({
        url: $(this).parent().attr('action'),
        type: "post",
        data: {'user_id': $('input[name=user_id]').val(), 'project_id': $('input[name=project_id]').val()},
        success: function(data){
            alert(data);
        }
    });
});

答案 1 :(得分:0)

根据您的表单操作,您需要更改路线,

喜欢这个。

Route::post('projects/{id}/like', 'LikeController@like');

而不是这个

Route::post('projects/{id}', 'LikeController@like');

答案 2 :(得分:0)

如果要发送AJAX请求,当您提交表单时,应该阻止默认事件,然后发出请求,如下所示:

$('#form-id').on('submit', function(e) {
    e.preventDefault(); //stops the form from being submited the normal way.

    $.ajax({
        url: 'projects',
        type: "post",
        data: {'user_id': $('input[name=user_id]').val(), 'project_id': $('input[name=project_id]').val()}
    })
    .done(function(response) { 
        //handle response on success
    })
    .fail(function(xhr) {
        //handle failed request
    });
});

您还需要将url更改为正确的路径,即在routes.php文件中设置的方式。