2010-03-17 8 views
5

J'utilise mod_rewrite remapper les URL de mon site dans le format suivant:Comment obtenir le chemin racine en JavaScript?

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

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

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

Le problème est que je fais des appels AJAX vers un fichier: http://www.mydomain.com/login.php

Et je ne veux pas écrire l'URL complète ou même utiliser le tour ../ car il n'y a pas un niveau fixe de dossiers.

Alors, ce que je veux quelque chose pour accéder au login.php de la racine, quel que soit le nom de domaine est:

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

Répondre

21

Qu'en est-:

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

Assurez-vous que vous autorisez l'accès à /login.php à partir de vos règles mod_rewrite.

+0

Merci beaucoup – Ryan

5

Vous pouvez également définir une variable pour JS à utiliser dans votre tête HTML:

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

Et puis ajoutez la variable siteRoot dans vos appels AJAX. Assurez-vous d'imprimer la variable siteRoot avant d'inclure vos fichiers .js.

Une autre façon d'obtenir ce fonctionnement est d'utiliser la balise de base HTML. Toutes les demandes côté client seront faites sur cette cible. Incluez-le avant toute déclaration de lien/script.

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

Hope this helps :)

Edit:

Votre aura pas besoin d'ajouter quoi que ce soit à vos appels AJAX si vous utilisez la méthode de l'étiquette de base. Juste un appel simple fera l'affaire.

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