Laravel通过ajax将数据传递给控制器

时间:2017-04-10 15:18:02

标签: php ajax laravel

我尝试将2个变量发送到FavorisController{{ Auth::user()->id }}以及我在网址中的id

这是我到目前为止所尝试的

路线:

Route::get('annonce_test/{id}','FavorisController@create' );

我的ajax脚本

$(document).ready(function() {
    $('.favoris').click(function(){                  
        var id_user = "{{ Auth::user()->id }}" ;
        $.ajax({
            url: 'annonce_test/{id}',
            type: 'GET',             
            data: {id: 1, id_user: $id_user},
            success: function(data){
                alert(Ajouter au Favoris avec succes);
            },
            error: function(){},
        });""
    });         
});

FavorisController

public function create(Requests $request)
{
    $id_annonce = $_GET['id'];
    $id_user = $_GET['id_user'];
    $query = DB::table('annonce_residentiel_user')
    ->insertGetId(
        array('annonce_residentiel_id' => $id_annonce , 'user_id' => $id_user)
        );
}

我在尝试获取非对象{{ Auth::user()->id }}

的属性时遇到错误

但这是正确的方法吗?我的意思是如果我有另一个删除脚本我应该在我的ajax脚本中查找url。

2 个答案:

答案 0 :(得分:1)

Auth::user()部分从JS脚本移至PHP:

->insertGetId(['annonce_residentiel_id' => $id_annonce , 'user_id' => auth()->user()->id]);

此外,请确保用户通过以下方式进行身份验证:

if (auth()->check()) {
    // Do stuff.
}

答案 1 :(得分:0)

根据您的路由定义,$ id是create方法的参数,要从ajax调用中获取更多数据,您应该使用Input :: get。此外,只有当ajax调用中的url格式为ex:annonce_test / 25时,才会激活该路由。检查ajax调用的更新。

路线:

    Route::get('annonce_test/{id}','FavorisController@create' );

Ajax电话:

     $(document).ready(function() {
     $('.favoris').click(function(){                  
         var id_user = "{{ Auth::user()->id }}" ;
         $.ajax({
             url: 'annonce_test/'+id_user,
             type: 'GET',
             data: {id: 1},
             success: function(data){
                 alert(Ajouter au Favoris avec success);
             },
             error: function(){},
       });
     });         
     });

FavorisController:

    public function create($id)
    {
        $id_annonce = Input::get['id'];
        $query = DB::table('annonce_residentiel_user')->insertGetId(
          array('annonce_residentiel_id' => $id_annonce , 'user_id' => $id));
    }