2012-11-21 6 views
12

Esempio:Come rimuovere il punto interrogativo finale da un modulo GET senza campi?

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

risultati Quando presentate in:

http://example.com/? 

come farlo:

http://example.com/ 

?

[Questo è un esempio molto semplice del problema, la forma attuale ha molti campi, ma alcuni sono disabilitati a volte. Quando tutti sono disabilitati, il trailing? appare]

+1

Tale questione appeso Il marchio è utile tanto quanto un'appendice ... e, a volte, come fastidioso ... ci siamo goduti gli stratagemmi! :-) – moodboom

risposta

3

Nel mio caso sto usando window.location, non è sicuro che sia la migliore alternativa, ma è l'unico che ho potuto farlo funzionare:

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

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

Il mio uso reale era quello di convertire GET parametro da percorsi URL reali, ecco il codice completo:

$('#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

Stavo cercando una risposta simile. Quello che ho finito è stato creare un pulsante che reindirizza a una determinata pagina quando si fa clic.

Esempio:

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

Questa non è una "risposta" alla tua domanda, ma potrebbe essere un buon lavoro in giro. Spero che aiuti.

0

Senza usare Javascript, non sono sicuro che ce ne sia uno. Un modo per alleviare il problema potrebbe essere quella di creare un ingresso nascosto che solo detiene un valore spazzatura che si può ignorare dall'altra parte in questo modo:

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

In questo modo non si avrà mai una richiesta GET vuota.

0

Questo è un vecchio post, ma hey .. qui ya go

se si utilizza qualcosa come PHP, è possibile inviare il modulo a una pagina "proxy" che reindirizza l'intestazione a una posizione specifica + la query.

Ad esempio:

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


?> 

Io parto dal presupposto questo ciò che si sta cercando di fare

Problemi correlati