2010-03-17 10 views
5
나는 다음과 같은 형식으로 내 웹 사이트의 URL을 다시 매핑 할 mod_rewrite를 사용하고

:JavaScript에서 루트 경로를 얻는 방법은 무엇입니까?

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

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

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

문제는 내가 AJAX 호출을하고 있다는 것입니다 파일 : http://www.mydomain.com/login.php

그리고 난 전체 URL을 쓰거나 심지어는 고정 된 레벨의 폴더가 없기 때문에 ../ 트릭을 사용하고 싶지 않습니다.

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

답변

21

무엇에 대해 :

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

하는 액세스를 허용하는지 확인

그래서, 내가 원하는 도메인 이름이 무엇이든 루트에서 login.php에 액세스 할 수있는 무언가가있다 mod_rewrite 규칙에서 /login.php으로 변경하십시오.

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

을 다음 AJAX 호출에 siteRoot 변수를 추가합니다

+0

감사합니다. – Ryan

5

또한 JS 당신의 HTML 헤드에 사용하는 변수를 정의 할 수 있습니다.

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

.js 파일을 포함하기 전에 siteRoot 변수를 인쇄하십시오.

이 작업을 수행하는 또 다른 방법은 HTML 기본 태그를 사용하는 것입니다. 모든 클라이언트 측 요청은 해당 대상에서 수행됩니다. 링크/스크립트 선언 앞에 포함 시키십시오.

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

희망이 도움이 :)

편집 : 당신은 기본 태그 방법을 활용할 경우 AJAX에 무엇을 추가 할

귀하 않을 필요가 호출합니다. 그냥 평범한 전화가 트릭을 할 것입니다.

$.ajax({ 
    type: "POST", 
    url: "login.php" 
}); 
관련 문제