Czym zastąpić pustą zmienną wyszukiwania?

0

Witam wszystkich,

Mam mały problem i nie wiem jak sobie z nim poradzić. Mianowicie mam funkcje sortowania filtrowania i wyszukiwania. Kody wygląda następująco:

 function sendParam(element) {
                var filterSelect = $("#filterSelect").val();
                var searchOption = $("#searchOption").val();
                var searchPhrase = $("#searchPhrase").val();
                var params1 = $(element).attr("sort");
                var params2 = $(element).attr("order");
                var url = "{{restUrl}}cases/caselistsorted/" + filterSelect + "/" + searchOption + "/"+searchPhrase + "/" + params1 + "/" + params2;
                $.ajax({
                    type: 'GET',
                    url: url,
                    data: null,
                    dataType: 'json',
                    success: function (data) {
                        if (data != null) {
                            console.log(url);
                            $(".case-list").html(data["code"]);
                        }
                    },
                    error: function (XMLHttpRequest, textStatus, errorThrown) {
                        console.log("Error: " + textStatus + " " + url);
                    }
                });
            }

            $(document).on('ready', function(){
                $('.button-sort').on('click', function() {
                    sendParam(this);
                });
                $('#filterSelect').change(function () {
                    sendParam(this);
                });
            });

            function customerSearch() {
            sendParam(this);
            }

            function customerSearchTextInput(event) {
                if (event.which == 13 || event.keyCode == 13) {
                    customerSearch();
                    return false;
                } else if (event.which == 27 || event.keyCode == 27) {
                    customerSearchClear();
                    return false;
                }
                return true;
            }

            function customerSearchClear() {
                var searchPhrase = $("#searchPhrase").val("");
                console.log("FieldClear!");
            }

Wszystko działa jak należy problem leży po tej stronie że gdy chce przefiltrować listę lub ją posortować a zmienna searchPhrase jest pusta to wyrzuca mi błąd

 
"Error: error https://localhost/cases/caselistsorted/no-filter/search_customer//casetype/desc"

Żeby posortować/pofiltrować listę muszę wstawić jakąś literę żeby zmienna searchPhrase nie była pusta.

0

Chociażby gwiazdką(*), potem po stronie serwera wykrywasz ten znak i jeżeli występuje odpowiednio modyfikujesz wynik. :)

0

Zrobiłem to w ten sposób czyli jeżeli wartość zmiennej jest pusta to searchPhrase się nie pojawia w url'u, jeżeli posiada jakąś wartość pojawia się

 
var url = "{{restUrl}}cases/caselistsorted/" + filterSelect + "/" + searchOption + (searchPhrase ? "/" + searchPhrase : "") + "/" + params1 + "/" + params2;

Ale nie wiem jak to teraz ogarnąć żeby sortowało po stronie PHP:

if ($filter && $searchOption && $searchPhrase != null && $sortField == "createDate" && $order == "asc") {
                usort($caseList, function ($a, $b) {
                    /* @var $a CMCase */
                    /* @var $b CMCase */
                    $time1 = strtotime($a->createDate);
                    $time2 = strtotime($b->createDate);
                    return $time1 > $time2;
                });
 
0

A nie wygodniej Ci to POSTem wysłać? Jeżeli omijasz jeden argument/parametr w URL, to się zmienia automatycznie kolejność pozostałych. Spróbuj moim sposobem. :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1