【问题标题】:Getting value from request in Laravel using ajax使用 ajax 从 Laravel 中的请求中获取价值
【发布时间】:2019-06-17 03:59:37
【问题描述】:

我在 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 函数给定数据(var1 和 var2),我、dd() 或 dump()?

这里是路线:

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

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

【问题讨论】:

    标签: ajax laravel


    【解决方案1】:

    dd() 是一个 laravel 函数,dump()for php。所以你不能从 javaScript 中使用它们。

    您不能通过直接 ajax 请求或 JavaScript 来 dd() or dump()

    您可以做的是,console log your data,或从browser developer portion, network tab 检查以查看您从 ajax 响应中获得了哪些数据。您可以在中找到浏览器开发人员部分,

    对于铬:

    Insepect > Network 
    

    对于 mozila:

    Insepect Element > Network 
    

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

    【讨论】:

    • 好的,让我们来改一下问题:如何访问该数据,以便我可以像对待其他人一样通过 response()->json() 返回它?编辑:划掉这个。我发现了如何。编辑控制器方法。
    • 打开网络选项卡,然后加载 ajax。之后,您将获得请求列表。然后单击您要查看响应的请求。然后你会得到更多的5个标签。转到响应选项卡。照片可以帮助你。 imgur.com/a/LpZlVrv 我从谷歌浏览器看到的所有过程。它可能因浏览器而异。
    • 我想你在说,如何捕捉数据?如果那时,如果return response()->json(array("var1"=> $var1, "var2"=> $var2), 200); 是您的回复,您通过response 变量收到,那么,您可以获得var var1 = response.data.var1var var2 = response.data.var2
    • $request->var1$request->var2 你试过了吗?
    • 为了避免 gibberish ,我个人使用return $request; 它适合我调试请求数据。
    【解决方案2】:

    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);
    
        }
    

    【讨论】:

    • 如果@hasan05 是对的,你应该接受他的回答。不回答你自己的问题,也不要给他回答你问题的适当功劳。
    • @Repox 我做到了。即使默认情况下它对我没有帮助,但他的一个子集让我朝着正确的方向思考。没有选择接受 cmets 作为接受的答案是吗?
    猜你喜欢
    • 2020-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多