使用Ajax从Laravel中的请求获取价值

时间:2019-06-16 18:31:00

标签: ajax laravel

我在PostsController中有这个ajax方法

public function ajax(Request $request)
    { 

        //dd($request);
        $this->authorize('view', Post::class);

        $posts = Post::orderBy("created_at","desc")->paginate(5);
        $comments = Comment::all();

        return response()->json(array("posts"=> $posts, "comments"=> $comments), 200);

    }

当您仅获取数据并发送数据时,它的效果很好。 因此,除了尝试通过ajax请求数据之外,我还尝试在ajax请求旁边发送一些数据。如何在控制器中访问该数据?

这是一种驻留在某些刀片内的方法:

function ajax(){

  let var1 = "gg";
  let var2 = "bruh";
  let token = document.querySelector("meta[name='csrf-token']").getAttribute("content");
  let url = '/posts';

  $.ajax({
    type: "POST",
    url: url,
    headers:
        {
            'X-CSRF-TOKEN': token
        },
    data: {
        'var1': var1,
        'var2': var2
    },
    success: function(data) {
        console.log(data);
    }
  });         

}

为了简化:如何通过PostsController中刀片的ajax函数给我dd()或dump()赋予数据(var1和var2)?

这是路线:

Route::post('/posts', "PostsController@ajax");

当我尝试dd()时,这是一些“乱码”: gibberish

2 个答案:

答案 0 :(得分:2)

dd()是laravel函数,dump()是php。因此您不能从javaScript中使用它们。

您不能dd() or dump()来自直接的ajax请求或JavaScript。

您可以做的是console log your data,或从browser developer portion, network tab检查以查看从ajax响应中获取的数据。您可以在

中找到浏览器开发人员部分。

对于Chrome:

Insepect > Network 

对于Mozila:

Insepect Element > Network 

如果您要获取控制器上的var1var2,则可以通过$request->var1$request->var2.来获取它们

答案 1 :(得分:-1)

Hasan05是正确的。只需要知道正确的方向。因此,为了获取ajax请求的数据参数,我修改了ajax控制器方法:

public function ajax(Request $request)
    { 
        $var1 = $request->input('var1');
        $var2 = $request->input('var2');

        $this->authorize('view', Post::class);

        $posts = Post::orderBy("created_at","desc")->paginate(5);
        $comments = Comment::all();

        return response()->json(array("posts"=> $posts, "comments"=> $comments, "var1"=> $var1, "var2"=> $var2), 200);

    }