2016-08-11 180 views
0

我有一個頁面顯示我的所有客戶。它使用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)}} 

我得到了一個未定義的變量:客戶端。爲什麼它沒有在視圖中得到解析對象?

非常感謝

+0

不確定您是否真的在這裏使用API​​。我認爲更好的方法是在視圖內渲染HTML,然後API將調用端點並接收一些數據,並通過Javascript在視圖內填充此數據。傳遞完整的HTML將會破壞API的想法。 –

回答

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()

+0

對於其他信息:'dump()'是函數'dd()'在幕後調用的函數,因此它基本上是相同的東西,而不會死亡並且不接受可變數目的參數。 – samrap