2010-03-17 24 views
5

Sto usando mod_rewrite per rimappare gli URL nel mio sito web nel seguente formato:Come ottenere il percorso radice in JavaScript?

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

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

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

Il problema è che sto facendo le chiamate AJAX in un file: http://www.mydomain.com/login.php

E non voglio scrivere l'url FULL o nemmeno usare il trucco ../ perché non c'è un livello fisso di cartelle.

Quindi, quello che voglio è qualcosa di accedere al login.php dalla radice, qualunque sia il nome di dominio è:

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

risposta

21

Che dire:

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

Assicurarsi che si consenta l'accesso a /login.php dalle regole mod_rewrite.

+0

Grazie mille :) – Ryan

5

Si potrebbe anche definire una variabile per JS da usare nella tua testa HTML:

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

E quindi aggiungere la variabile siteRoot nella vostra chiamate AJAX.

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

Basta fare in modo di stampare la variabile siteRoot prima di includere i file .js.

Un altro modo per farlo funzionare è utilizzare il tag di base HTML. Tutte le richieste lato client saranno fatte su quel target. Includilo prima di qualsiasi link/dichiarazione di script.

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

Spero che questo aiuti :)

Edit:

Il vostro bisogno soliti aggiungere nulla al vostro chiamate AJAX se si fanno uso del metodo di tag base. Solo una semplice chiamata farà il trucco.

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