2010-03-17 24 views
5

estoy usando mod_rewrite para volver a asignar las direcciones URL en mi página web en el siguiente formato:¿Cómo obtener la ruta raíz en JavaScript?

http://www.mydomain.com/health/54856

http://www.mydomain.com/economy/strategy/911025/

http://www.mydomain.com/tags/obama/new

El problema es que estoy haciendo llamadas AJAX a un archivo: http://www.mydomain.com/login.php

Y no quiero escribir la URL COMPLETA ni utilizar el truco ../ porque no hay un nivel fijo de carpetas.

Por lo tanto, lo que quiero es algo para tener acceso al login.php de la raíz, cualquiera que sea el nombre de dominio es:

$.ajax({ 
    type: "POST", 
    url: "http://www.mydomain.com/login.php" 
}); 

Respuesta

21

¿Qué hay de:

$.ajax({ 
    type: "POST", 
    url: "/login.php" 
}); 

Asegúrese de que se permite el acceso a /login.php de sus reglas de mod_rewrite.

+0

Thanks a bunch :) – Ryan

5

También puede definir una variable de JS para usar en la cabeza HTML:

<script type="text/javascript"> 
// siteRoot will be equal to http://www.yourdomain.com/ 
var siteRoot = '<?php echo $theSiteRoot; ?>'; 
<script> 

Y a continuación, añadir la variable siteRoot en su llamadas AJAX.

$.ajax({ 
    type: "POST", 
    url: siteRoot+"login.php" 
}); 

Solo asegúrese de imprimir la variable siteRoot antes de incluir sus archivos .js.

Otra forma de hacerlo funcionar es usando la etiqueta de base HTML. Todas las solicitudes del lado del cliente se realizarán en ese objetivo. Incluirlo antes de cualquier declaración de enlace/script.

<base href="<?php echo $theSiteRoot; ?>" /> 

Espero que esto ayude :)

Editar:

Su planteo necesidad de añadir nada a su llamadas AJAX si hace uso del método tag de base. Solo una simple llamada hará el truco.

$.ajax({ 
    type: "POST", 
    url: "login.php" 
}); 
Cuestiones relacionadas