Probleem Zoekfilter + Ajax
Ik zit met het volgende probleem.
Ik heb een pagina met een tabel waarin verkoop orders staan.
Boven het tabel zit een zoekfilter en dit zoekfilter stuurt via ajax de ingevulde velden naar de server, en het resultaat wordt weer in de tabel geplaatst.
Op de server word dan een zware query uitgevoerd met 7 joins.
Wanneer de zoekfunctie niet word gebruikt dan staan de orders binnen 3 seconden in de tabel. (50 rows)
Maar wanneer de zoekfunctie wel wordt gebruik dan duurt het 10 seconden of langer en bij gebruik van internet explorer lijkt lijkt de browser vast te lopen(Dit lijkt op een render probleem).
Dit gebeurd meestal als het gaat om meer dan 100 rows.
Heeft iemand een idee hoe ik dit kan oplossen? Ik zat zelf te denken om de resultaten op te splitsen in pagina's maar het probleem is dan dat ik 2 x die zware query moet gaan draaien. Omdat je eerst het aantal rows moet weten om het aantal pagina's te bepalen. En vervolgens moet de query nogmaals gedraaid worden om de resultaten op te halen.
Alvast bedankt.
Met vriendelijke groet,
Patrick
Gewijzigd op 06/01/2014 19:32:48 door Patrick S
Voor het ophalen van het aantal rijen kan je ook
En dan op de plaats van de puntjes de rest van de query waarmee je de daadwerkelijke gegevens ophaalt.
Aan COUNT had ik nog niet gedacht.. Bedankt.
Ik heb de query sneller kunnen maken. In Chrome en Firefox word alles goed ingeladen.
Alleen Internet Explorer loopt vast wanneer er veel rijen aan de tabel worden toegevoegd.
IE kan er niet zo goed tegen als je de innerHTML van de tabel(of tbody) zelf aanpast, dan kan je beter een div er omheen zetten en daar de gehele tabel inladen.
$('#sales_table').find('tbody').remove();
En vul de tabel weer met tbody's
$('#sales_table').find('thead').after(data);
Code (js)
1
2
3
2
3
$("#sales_table tbody").remove();
// voor het vullen
$("#sales_table thead").after(data);
// voor het vullen
$("#sales_table thead").after(data);
Maar nogmaals, in IE kan je beter de gehele tabel als html inladen.
Ik ga eens kijken wat er gebeurd als ik de hele tabel doe.
Bedankt.