2012-11-21 13 views
12

Przykład:Jak usunąć końcowy znak zapytania z formularza GET bez pól?

<form> 
    <input type='submit'> 
</form> 

Kiedy przedłożone wyniki w:

http://example.com/? 

Jak to zrobić:

http://example.com/ 

?

[Jest to bardzo prosty przykład problemu, rzeczywisty formularz ma wiele pól, ale niektóre są czasami wyłączone. Kiedy wszystkie są wyłączone, końcowe? pojawia się]

+1

To wisi pytanie Znak jest równie przydatny jak dodatek ... a czasami tak kłopotliwy ... Cieszył się obejściem! :-) – moodboom

Odpowiedz

3

W moim przypadku używam window.location, nie wiedząc, że jest to najlepsza alternatywa, ale jest to tylko jeden mogę zrobić to praca:

$('#myform').submit(function() 
{ 
    ... if all parameters are empty 

    window.location = this.action; 
    return false; 
}); 

Moje prawdziwe użycie było przekonwertować GET parametr do rzeczywistych ścieżek zawartości, tak tutaj jest pełny kod:

$('#myform').submit(function() 
{ 
    var form = $(this), 
     paths = []; 

    // get paths 
    form.find('select').each(function() 
    { 
     var self = $(this), 
      value = self.val(); 

     if (value) 
      paths[paths.length] = value; 

     // always disable to prevent edge cases 
     self.prop('disabled', true); 
    });  

    if (paths.length) 
     this.action += paths.join('/')+'/'; 

    window.location = this.action; 
    return false; 
}); 
0

Szukałem podobnej odpowiedzi. W końcu udało mi się stworzyć przycisk, który przekierowuje do określonej strony po kliknięciu.

Przykład:

<button type="button" value="Play as guest!" title="Play as guest!" onclick="location.href='/play'">Play as guest!</button> 

Nie jest to „odpowiedź” na pytanie, ale może być dobrym obejść. Mam nadzieję, że to pomoże.

0

Bez używania Javascriptu, nie jestem pewien, czy istnieje. Jednym ze sposobów rozwiązania tego problemu może być stworzenie ukryte wejście, które po prostu posiada pewną wartość śmieci, które można zignorować po drugiej stronie tak:

<input type="hidden" name="foo" value="bar" /> 

ten sposób nigdy nie będziesz miał pustą żądanie GET.

0

jest to stary post, ale hej .. tutaj ya go

jeśli używasz czegoś takiego jak PHP, możesz przesłać formularz na stronę "proxy", która przekieruje nagłówek do konkretnej lokalizacji + zapytanie.

Na przykład:

HTML:

<form action="proxy.php" method="get"> 
    <input type="text" name="txtquery" /> 
    <input type="button" id="btnSubmit" /> 
</form> 

PHP (proxy.php)

<?php 

    if(isset($_GET['txtquery'])) 
     $query = $_GET['txtquery']; 

     header("Location /yourpage/{$query}"); 


?> 

jestem zakładając go, co chce zrobić

Powiązane problemy