2010-02-21 55 views
7

¿Puedo pasar variables de publicación y volver a cargar una página al hacer clic en un hipervínculo?jQuery onclick variables de paso de pase y recarga de la página

Para ser claros, tengo algo como esto. <a href="test.php?name=test">Click</a>

Si Javascript está activado,

creo que puedo usar "event.preventDefault()" para suprimir el paso como obtener la variable.

Ahora, haciendo clic, el nombre debe pasar como variable de publicación en lugar de get.

Si javascript está deshabilitado, Entonces lo anterior debería funcionar.

Respuesta

11

Puede hacerlo, creando un nuevo elemento form, apuntándolo al href y llamando al .submit() en él.

<a class="postlink" href="test.php?name=test">Click</a> 

<script type="text/javascript"> 
    $('.postlink').click(function() { 
     var form= document.createElement('form'); 
     form.method= 'post'; 
     form.action= this.protocol+'//'+this.hostname+this.pathname; 
     $.each(this.search.slice(1).split(/[&;]/g), function() { 
      var ix= this.indexOf('='); 
      if (ix===-1) return; 
      var input= document.createElement('input'); 
      input.type= 'hidden'; 
      input.name= decodeURIComponent(this.slice(0, ix)); 
      input.value= decodeURIComponent(this.slice(ix+1)); 
      form.appendChild(input); 
     }); 
     document.body.appendChild(form); 
     form.submit(); 
     return false; 
    }); 
</script> 

o usted podría hacer una petición AJAX lugar y reload() la página después si lo prefiere.

Sin embargo, no estoy seguro de por qué querría hacer esto. ¿De qué sirve un enlace que generalmente está PUBLICADO, excepto cuando no lo es? (No solo cuando JS está deshabilitado/no disponible o cuando es un motor de búsqueda, sino también cuando el usuario hace clic en el vínculo o intenta hacer clic con el botón secundario en marcarlo o lo que sea).

Si lo que desea es algo que se comporta como un botón para enviar un formulario POST, mejor para usar un botón real de formulario y enviar, y luego usar CSS para darle un aspecto similar al de un enlace si así lo desea.

+0

Gracias a ton. Funcionó. Ajax y Jquery son muy nuevos para mí. Entonces, usted está sugiriendo que, cuando js esté habilitado, haga "ajax" en lugar de "publicar" y cuando js esté desactivado vuelva a cargar por "obtener". Eso suena perfecto. Realmente lo aprecio. Si es posible, puedes ayudarme a ajax. Gracias de nuevo. – user277891

0

Tengo unos 10 enlaces en una página. Cuando el usuario hace clic en esos enlaces, ajax-reload debe tener lugar.

Para ser claros, tengo algo como esto.

<a href="test.php?name=one">one</a> 
<a href="test.php?name=Two">Two</a> 

Si Javascript está activado,

Onclick, carga ajax debe tener lugar.

Si javascript está deshabilitado, entonces lo anterior debería funcionar.

Básicamente estoy usando name para limitar algunos valores de mi página de búsqueda.

2

Muy buena pista ....

yo estaba tratando primero en enviar los datos del formulario a través de una llamada Ajax Post y volver a cargar la página después, pero no estaba funcionando correctamente:

var biq_select_val = jQuery('#biq_search_select').val(); 
jQuery.post(window.location.href, 
     { biq_amazon_item_list_search: biq_select_val}, 
     function() {window.location.reload();} 
    ); 

Ahora Estoy utilizando solo un:

jQuery('#biq_amazon_item_list_search_form').submit(); 

y está funcionando bien.

+0

A veces, la solución más fácil es la mejor ... Gracias – David

Cuestiones relacionadas