执行 GET 请求时,如何仅获取 view() 函数的第二个参数的响应?

Posted

技术标签:

【中文标题】执行 GET 请求时,如何仅获取 view() 函数的第二个参数的响应?【英文标题】:How can I grab the response of only the 2nd parameter of the view() function when doing a GET request? 【发布时间】:2021-11-25 05:16:24 【问题描述】:

我正在做一个 ajax GET 请求

$(dataTableSearchInputButtonID).on('click', function () 
            $.ajax(
                type: "GET",
                url: "myUrl.test/tools",
                dataType: "html",
                success: function (resp) 
                    console.log(resp);
                ,
            );
        );

但是,在控制台的响应中,我只在单击“搜索”按钮时看到 HTML(检索和显示数据)

public function getTriviaTags(Request $request)
    try 
        $userSearch = $request->get('userSearch');
        $tagsList = $this->tagRepository->getTags($userSearch);

        $response = [
            'tagsList' => $tagsList,
            'userSearch' => $userSearch,
            'trivia' => 'tag'
        ];

        return view('pages.tools.main', $response);
     catch (Exception $exception) 
        parent::log($exception, self::class);
    

在输入字段中输入文本并单击搜索时,如何确保 $response 变量出现在 ajax success() 方法中(console.log(resp);)?

我需要将userSearch 附加到 URL (myUrl.test/tools?userSearch="countries") 以便显示正确的数据。当我在搜索栏中手动执行此操作时,它可以正常工作。

我在实现这一目标的正确轨道上吗?

【问题讨论】:

【参考方案1】:

你不应该返回视图,而是 JSON 响应:

public function getTriviaTags(Request $request)
try 
    $userSearch = $request->get('userSearch');
    $tagsList = $this->tagRepository->getTags($userSearch);

    $response = [
        'tagsList' => $tagsList,
        'userSearch' => $userSearch,
        'trivia' => 'tag'
    ];

    return response()->json($response)
 catch (Exception $exception) 
    parent::log($exception, self::class);

然后你可以通过console.log(resp.data)访问响应变量

【讨论】:

是的,但我实际上需要将视图与响应一起返回,这样我就可以访问 jquery 中的响应变量,但我不知道该怎么做(或者如果可能的话)。 如果我理解正确的话,我认为不是。为什么不以这种方式访问​​变量?没有什么能阻止你创建一个变量,比如 let whatever = response.data.tagsList

以上是关于执行 GET 请求时,如何仅获取 view() 函数的第二个参数的响应?的主要内容,如果未能解决你的问题,请参考以下文章

使用 axios.get 方法加载页面时,如何仅从 API 获取数据一次?

如何获取 Firebase 函数请求的原始 URL?

如何从get请求获取json响应而不是html响应?

jQuery.get(url, [data], [callback], [type])

如何为“仅获取”的变量赋值?

执行 Web 请求时如何指定仅连接超时?