2017-08-05 79 views
1

我一直有一點問題。我正在嘗試爲我的數據庫創建一個過濾器。到目前爲止,我想出了這一點:Laravel - AJAX搜索適用於輸入但不是選擇

刃文件:

<input type="text" class="form-control" id="search" name="search" placeholder="Name, NORAD or ID"></input> 

<select name="filtername" id="filtername"> 
    <option value="none"></option> 
    <option value="Falcon">Falcon</option> 
    <option value="rb">R/B</option> 
</select> 

的Javascript AJAX調用:

$(document).ready(function() { 
$('#search').on('keyup', function() { 
    $value = $(this).val(); 
    delay(function() { 
     if ('#search'.length > 3) { 
      $.ajax({ 
       type: 'get', 
       url: '{{$launchsitename->site_code}}', 
       data: { 
        'search': $value 
       }, 
       success: function(data) { 
        $('#launchsatdisplay').html(data); 
       } 
      }); 
     } 
    }, 300); 
}); 

$("#filtername").change(function() { 
    var filtername = $(this).val(); 
    var dataString = "filtername=" + filtername; 
    $.ajax({ 
     type: "get", 
     url: "{{$launchsitename->site_code}}", 
     data: { 
      'search': dataString 
     }, 
     success: function(data) { 
      $('#launchsatdisplay').html(data); 
     } 
    }); 
}); 
}); 

控制器:

if ($request->ajax()) 
    { 
     $output=""; 
     $launchsitesatellite = DB::table('satellites') 
      ->where(function($q) use ($request) { 
       $q->orWhere('satname','LIKE','%'.$request->search.'%') 
        ->orWhere('norad_cat_id','LIKE','%'.$request->search.'%') 
        ->orWhere('object_id','LIKE','%'.$request->search.'%'); 
      }) 
      ->where('site', $site_code)->get(); 
     if ($launchsitesatellite) 
     { 
      $output .='<tr>'. 
      '<th>'.'Satellite Name'.'</th>'. 
      '<th>'.'NORAD ID'.'</th>'. 
      '<th>'.'Object Type'.'</th>'. 
      '<th>'.'Launch Date'.'</th>'. 
      '<th>'.'Country'.'</th>'. 
      '<th>'.'Object ID'.'</th>'. 
      '<tr>'; 
      foreach ($launchsitesatellite as $key => $launchsitesatellites) { 
      $output .='<tr>'. 
        '<td>'.$launchsitesatellites->satname.'</td>'. 
        '<td>'.$launchsitesatellites->norad_cat_id.'</td>'. 
        '<td>'.$launchsitesatellites->object_type.'</td>'. 
        '<td>'.$launchsitesatellites->launch.'</td>'. 
        '<td>'.$launchsitesatellites->country.'</td>'. 
        '<td>'.$launchsitesatellites->object_id.'</td>'. 
        '</tr>'; 
      } 
     } 
     return $output; 
    } 
    else { 
     $launchsitesatellite = DB::table('satellites')->where('site', $site_code)->Paginate(40); 
     return view('pages/launchsite-filter', compact('launchsites', 'launchsitesatellite')); 
    } 

此代碼用於對我的控制器進行AJAX調用並從數據庫中獲取結果。上面的代碼完全適用於input。我能夠輕鬆地搜索數據庫。唯一的問題是select。每當我選擇一個選項時,它都不會返回結果。我猜測我的控制器中編寫select的方式有些問題,因爲我不認爲Javascript會導致問題。

select應該讀取我數據庫中名爲satellitessatname列並返回過濾結果。

有人能夠說明爲什麼select不工作或我的代碼中的錯誤是什麼?

+0

' '搜索':dataString'。你怎麼看這是什麼? –

+0

'$ request-> filterfalcon'?這是什麼? –

+0

@u_mulder對不起 - 這是我試圖讓它工作。我現在已經刪除它。 –

回答

0

修改選擇框,您Ajax調用代碼如下

$("#filtername").change(function() { 

    var dataString = $(this).val(); 
    $.ajax({ 
     type: "get", 
     url: "{{$launchsitename->site_code}}", 
     data: { 
      'search': dataString 
     }, 
     success: function(data) { 
      $('#launchsatdisplay').html(data); 
     } 
    }); 
}); 
相關問題