2016-09-19 63 views
0

我遇到問題了。我具備的功能來分類,過濾和搜索,當searchPhrase的文本區域是空我有一個問題:如何替換searchPhrase的空變量?

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

當searchPhrase爲空,我不能排序和過濾器中使用。 我該如何解決它?

這是我的代碼:

  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!"); 
     } 

當我在searchPhrase somethink如寫 「你好」 我有這樣的結果:

"https://localhost/cases/caselistsorted/no-filter/search_customer/hello/createDate/asc" 

PHP代碼:

if ($filter && $searchOption && $searchPhrase && $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

你可通過添加三元組來檢查searchPhrase是否爲空

(searchPhrase ? "/" + searchPhrase : "") 

,只添加/(和searchPhrase),如果它包含一個值:

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

謝謝它的工作,但我需要在這裏更改排序工作php代碼。看看我的代碼,我編輯了我的問題。 – Adrian

0

如果你可以使用數組,你可以嘗試這樣的事情。

注意,它最好有一個dataStructure,一個對象或一個數組。對象不會有秩序,所以要麼你將不得不使用地圖,或者如果你是ES6,使用設置

var data = []; 
 
/*data.push($("#filterSelect").val()); 
 
data.push($("#searchOption").val()); 
 
data.push($("#searchPhrase").val()); 
 
data.push($(element).attr("sort")); 
 
data.push($(element).attr("order"));*/ 
 

 
data.push("test"); 
 
data.push(""); 
 
data.push("Hello"); 
 
data.push("World"); 
 
data.push(""); 
 

 

 
function isNotEmpty(val){ 
 
    return !(
 
    val === undefined || 
 
    val === null || 
 
    val.toString().trim().length === 0 
 
) 
 
} 
 

 
var qsString = data.filter(isNotEmpty).join("/"); 
 
console.log(qsString)