2016-03-04 112 views
1

你好社區#1,我需要GET東西幫助。所以我有一個先進的搜索,當我提交表單,瀏覽器顯示此鏈接:清空網址參數

/page_korteles.php?kriterijus-susirgo-nuo= &標準,有病到= &標準出生自= &標準出生起來= &標準點膠,從= &標準點膠機= &測試輸入從= &測試輸入到= &標準高級=無

是否有可能清除空參數?或者,也許有不同的這種工作方式?真的需要一些想法。

+0

如果你只是想從讓他們刪除,看看[array_filter(http://php.net/manual/en/function.array-filter.php) – FirstOne

+0

'的print_r(array_filter($ _ GET) )' –

+0

是否有可能在該網址顯示之前的土地的功能?或者我應該有載降落,並立即重定向? – Sidas

回答

4

您可以簡單地使用array_filter() -

print_r(array_filter($_GET)); 

更多的知識 - https://secure.php.net/manual/en/function.array-filter.php

注: - 上述功能將不會從您的網址中刪除任何東西,只是從數組變量刪除空值的元素$_GET

也許你想要的東西,像下面(這個建議被另一個角色給出,我只是將它添加因爲可能是它有助於你) -

if(array_filter($_GET) == $_GET) { //stays on page and do other stuff (already removed empty) }else{ // remove empty keys and redirect to url without them; } 
+0

是否有可能在該網址顯示之前的土地的功能?或者我應該有載降落,並立即重定向? – Sidas

+0

可以做這樣的事情(未經測試):'如果(array_filter($ _ GET)== $ _GET){//留在網頁和做其他的東西(已被刪除空)}其他{//刪除空鍵和重定向的URL沒有他們; }'。該檢查應防止循環 – FirstOne

+0

...我以前沒想到它,但請記住,如果值是'0'(0也有望),它將從陣列也被刪除。 – FirstOne

2

嘗試這樣當提交表單

$("#search-form").submit(function(){ 
    $("input").each(function(index, input){ 
     if($(input).val() == "") { 
      $(input).remove(); 
     } 
    }); 
    }); 
+0

我喜歡這個主意,但我認爲最好不要創建具有空值的數組,併發送此數組服務器,並且不移除元素... –

3

其實如果你想要的網址看不包含空參數,可以過濾他們走出查詢字符串後重定向到同一頁面。

// using a callback in array_filter can avoid filtering non-empty falsey values (0, etc.) 
$not_blank = array_filter($_GET, function($x) { return $x != ''; }); 

if ($not_blank != $_GET) { 
    $query = http_build_query($not_blank); 
    header('Location: ' . $_SERVER['PHP_SELF'] . "?$query") ; 
    exit; 
} 

老實說,雖然,我不知道它是如何傷害到有什麼他們那裏。這似乎是多了一個步驟的,沒有必要但願這導致未來的問題,如果你actualy需要空參數值發送到該頁面。