在视图中显示搜索结果

时间:2016-08-11 23:04:20

标签: ajax laravel laravel-5.2

我有一个显示所有客户的页面。它使用paginate,每页只显示16个客户端。因此,我提供了实时搜索功能。

执行搜索时,从结果中选择的选项会触发以下内容

select: function (event, ui) {
    $.ajax({
        url: "/returnClient",
        type: "GET",
        datatype: "html",
        data: {
            value : ui.item.value
        },
        success: function(data) {
            $('.container').fadeOut().html(data.html).fadeIn();
        }
    });
}

基本上调用以下函数

public function returnClient(Request $request)
{
    if($request->ajax()){
        $selectedClient = $request->input('value');
        $client = Client::where('clientName', $selectedClient)->first();

        $html = View::make('clients.search', $client)->render();
        return Response::json(array('html' => $html));
    }
}

如果我输出上面的客户端变量,我可以看到这个特定客户端的所有细节。然后将其传递给部分clients.search。 在clients.search中,如果我这样做

{{dd($client)}}

我得到Undefined变量:client。为什么它不能在视图中获得解析的对象?

非常感谢

1 个答案:

答案 0 :(得分:3)

问题是您未正确地将$client传递给视图。 Views documentation显示了如何通过关联数组正确传递数据。 API docs确认数组是预期的。

请改为:

public function returnClient(Request $request)
{
    if($request->ajax()){
        $selectedClient = $request->input('value');
        $client = Client::where('clientName', $selectedClient)->first();

        $html = View::make('clients.search', ['client' => $client])->render();
        return Response::json(array('html' => $html));
    }
}

此外,作为一种习惯,您可能需要考虑使用dump()代替dd()