2009-05-11 11 views
103

tengo algo de código como este,el cambio de URL y redirigir usando jQuery

<form id="abc"> 
    <input type="text" id="txt" /> 
</form> 

y ahora quiero volver a dirigir así,

var temp = $("#txt").val(); 
url = "http:abc.com/" + temp; 
window.location.replace(url); 
or 
window.location(url); 

¿Hay alguna forma de jQuery para solucionar esto? Todavía me permite tener url = http://abc.com.

+0

Gracias mucho a todos ustedes! Ahora todavía no sé qué diferencia entre window.location y window.location.replace. En mi ejemplo, solo tengo que publicar la URL en mi página de esa manera: http://abc.com/abc para obtener abc para buscar en mi base de datos con abc es lo que el usuario escribe en put y presiona enter o botón pero siempre devuelve http://abc.com?name=abc, así que creo que puedo activar el evento enviar para redirigir y cambiar mi URL a lo que quiero, pero todavía no hacen nada. Eso es todo, por cierto ¡gracias de nuevo! – gacon

+3

Le expliqué la diferencia entre window.location y window.location.replace aquí: http://stackoverflow.com/questions/846954/change-url-and-redirect-in-jquery/847130#847130 –

Respuesta

38

os digo la verdad, yo todavía no consigo lo que necesita, pero

window.location(url); 

debería ser

window.location = url; 

una búsqueda en window.location referencia le dirá eso.

16

jQuery no tiene una opción para esto, ni debería tener una. Este es un javascript perfectamente válido y no hay ninguna razón para que jQuery proporcione funciones de contenedor para esto.

jQuery es solo una biblioteca además de javascript, incluso si usa jQuery, puede seguir utilizando el javascript normal.

Por cierto window.location no es una función, sino una propiedad que se deben establecer de esta manera:

window.location = url; 
+0

voto a favor para reclamar jQuery no tiene un método para esto (aunque es una exageración innecesaria y no debe ser recomendado) $ jq (window) .attr ("location", "http://tudominio.com"); o $ (ubicación) .attr ('href', url); – rob

+6

Subió para deshalo ese voto abajo. La respuesta de Pim puede leerse fácilmente como "no hay un método específico en jQuery para esto". Rechazar la semántica léxica es un mal uso de ese privilegio. –

297

Como se mencionó en las otras respuestas, que no necesitan jQuery para hacer esto; solo puede usar las propiedades estándar. Sin embargo, parece que no parece saber la diferencia entre window.location.replace(url) y window.location = url.

  1. window.location.replace(url) reemplaza la ubicación actual en la barra de direcciones por una nueva. La página que llamó a la función no se incluirá en el historial del navegador. Por lo tanto, en la nueva ubicación, al hacer clic en el botón Atrás en su navegador, se volvería a la página que estaba viendo antes de visitar el documento que contiene el código de redireccionamiento de JavaScript.
  2. window.location = url redirige a la nueva ubicación. En esta nueva página, el botón Atrás en su navegador apuntaría a la página original que contiene el redireccionamiento de JavaScript.

Por supuesto, ambos tienen sus casos de uso, pero me parece que en este caso debe seguir con este último.

PD: Probablemente se olvidó dos barras después de http: en la línea 2 de su código JavaScript:

url = "http://abc.com/" + temp; 
+34

+1 para la explicación de 'window.location.replace' –

+5

Pero para ser muy correcto, debe establecer window.location.href en lugar de window.location. Mientras que ambos funcionan hoy en día, este último es un objeto (y por supuesto no es compatible para asignar una cadena a una versión antigua de IE ...) – Victor

+1

@Victor [citación necesitada] –

2

probar este ...

$("#abc").attr("action", "/yourapp/" + temp).submit(); 

Lo que significa:

encontrará un formulario con id "abc", cambie attribute con el nombre "acción" y luego preséntelo ...

¡Esto funciona para mí ...!

+0

¡Lo intentaré más tarde! – gacon

+0

jajaja, eso es algo divertido S! Sin embargo, me gusta la idea. Puntos por ser creativo! –

5
var temp="/yourapp/"; 
$(location).attr('href','http://abcd.com'+temp); 

Prueba esto ... utilizarse como alternativa

Cuestiones relacionadas