2014-03-26 62 views
1

加載我refered http://maxoffsky.com/code-blog/laravel-shop-tutorial-3-implementing-smart-search/在我laravel應用程序中實現搜索功能Selectize下拉不是從數據庫

當我使用遠程的JavaScript代碼示例從http://brianreavis.github.io/selectize.js/它的工作原理完全fine.But當我使用它從我自己的加載數據控制器方法,它不填充選擇菜單中的項目。

這是我的控制器方法

public function index(){ 

$query = e(Input::get('q','')); 

if(!$query && $query == '') return Response::json(array(), 400); 

$products = User::where('firstname','like','%'.$query.'%') 
    ->orderBy('firstname','asc') 
    ->take(5) 
    ->get(array('talent','firstname','profilepic','username'))->toArray(); 

$categories = User::where('talent','like','%'.$query.'%') 
    ->take(5) 
    ->get(array('talent', 'firstname','username')) 
    ->toArray(); 


// Merge all data into one array 
$data = array_merge($products, $categories); 

    return Response::json(array(
    'data'=>$data 
)); 
} 

我曾嘗試使用下面的代碼

$(document).ready(function(){ 



     $('#searchbox').selectize({  
     valueField: 'name', 
     labelField: 'firstname', 
     searchField: 'firstname', 
     options: [], 
     render: { 
       option: function(item, escape) { 
        return '<div>hello</div>'; 
       } 
      }, 
     load: function(query, callback) { 
       if (!query.length) return callback(); 
       $.ajax({ 
        url: root + '/search', 
        type: 'GET', 
        dataType: 'json', 
        data: { 
         q: query 
        }, 
        error: function() { 
         callback(); 
        }, 
        success: function(res) { 
         callback(res.data); 
        } 
       }); 
      }, 
      onChange: function(){ 
       window.location = this.items[0]; 
      } 
     create: false 
      }); 
     }); 

初始化我selectize我無法弄清楚我是錯過了什麼

回答

0

我會考慮比較查詢示例遠程服務工作正常時數據的外觀,然後比較從數據檢索時的數據你的控制器。我懷疑這可以很容易地看出數據出現的格式和改變它需要採取的步驟。如果你仍然陷入困境,你可以在這裏發佈由此產生的json,我可能會給你進一步的指導,讓你們與他們對齊。

+0

我試着檢查了兩個答案,我只是在成功添加了一個提示:function(res){}上面,我發現使用它與我的代碼不會產生任何json響應 –

+0

那麼也許可以替換你的Return :: json使用dd($ data)調用進行調用,這將只打印出$ data的內容;確保您的數據本身正在正確構建。 – John

+0

同樣在你的控制器函數開始時,你正在返回一個空白數組,也許這就是發生了什麼。也許你應該檢查一下這個陳述不是問題。也許你只是想說如果($ query!=「」)..我也看不到通過e()函數傳遞輸入的要點。 – John