2017-10-15 4 views
0

Es ist mir gelungen, die Paginierung für meine AJAX-Filter zu erstellen. Die einzige Sache ist, dass es zurückgesetzt wird, nachdem ich auf einen Link geklickt habe. Ich brauche einen Weg für die Seitennumerierung, um sich an die Suche zu erinnern, die vorher angewendet wurde. Ich kann die korrekte Anzahl an Seiten anzeigen, die bei der Suche angezeigt werden. Das einzige Problem dabei ist, dass es zurückgesetzt wird, wenn ich auf den Seitenumbruch-Link klicke.Laravel Ergebnisse an Paginierung anhängen

-Code Ich bin mit:

Blade:

@foreach($launchsitesatellite as $satellite) 
<div id="main-data"> 
    <div class="table-row" id="launchsatdisplay"> 
     {{$satellite->satname}} 
    </div> 
</div> 
@endforeach 
{{$launchsitesatellite->links()}} 

AJAX Aufruf zur Paginierung:

$(window).on('hashchange',function(){ 
    page = window.location.hash.replace('#',''); 
    getObjects(page); 
}); 
$(document).on('click','.pagination a', function(e){ 
    e.preventDefault(); 
    var page = $(this).attr('href').split('page=')[1]; 
    location.hash = page; 
}); 
function getObjects(page){ 
    $('#default').remove(); 
    $.ajax({ 
     url: '/data/{{$launchsitename->site_code}}?page=' + page 
    }).done(function(data){ 
     $('#data-holder').html(data); 
    }); 
}; 

PHP Funktion:

AJAX Search/Filter:

$("#apply").click(function() { 
$country=$('#filter-country').val(); 
$type=$('#filter-type').val(); 
$year=$('#filter-year').val(); 
    $.ajax({ 
     type: "GET", 
     url: "/data/{{$launchsitename->site_code}}", 
     data: {'country':$country, 'object_type':$type, 'launch':$year}, 
     success: function(data) { 
      $('#data-holder').html(data); 
    }); 
}); 

TL; DR Wie würden Sie verhindern Paginierung meine AJAX-Suche/Filter Zurücksetzen, wenn ich auf Seite 2 gehen, zum Beispiel?

Antwort

0

Auf dem Client müssen Sie die Abfrageparameterfilterwerte beim Laden des Dokuments laden.

zB: (keine Fehlerprüfung)

$(document).ready(function() { 
    // Populate filters from query parameters 
    $('#filter-type').val(GetURLParameter('type')); 
    .... 

dann auf dem Server müssen Sie Ihre Abfrage Filter auf die Links Code

zB im Code anhängen, bevor Sie die Klinge Vorlage machen

if(isset($typeFilter)){ 
    $launchsitesatellite->appends(['type' => typeFilter]) 
} 
+0

Vielen Dank für Ihre Antwort! Würde das also in meinem AJAX-Aufruf für die Paginierung oder die eigentlichen Filter gehen? –

+0

Dies ist ein separater Code, der Ihre Filter zwischen den Seitenaktualisierungen synchronisieren soll. –

+0

Ich habe die Antwort aktualisiert, um eine bessere Vorstellung davon zu geben, wo der Code leben würde. –