2012-10-02 2 views
2

자바 스크립트에서 AJAX 요청을 수행 할 때, 거기가 필요할 수있는 경우에 작성하는 것입니다는 "/"같음 "window.location.protocol + '//'+ window.location.host"

window.location.protocol + '//' + window.location.host 
아약스 요청을 때 동일해야하므로 결국

대신 단순히

/ 

는, 이미지, 스크립트, CSS 등의 파일은 항상 상대적으로 지정됩니다.

이유는 내가 어떻게하는지에 대한 공식적인 제안 (예 : w3c)을 찾을 수 없기 때문입니다.

+0

같은 의미라면 다른 사람에 대한 공식적인 제안은 볼 수 없습니다. – hvd

+0

어디서 똑같은 뜻입니까? 내 질문은 가정을 기반으로하고 지금까지 그들은 일했다 : P – Stefan

+0

아시다시피, window.location.protocol 현재 사용중인 프로토콜입니다, window.location.host 현재 사용중인 호스트, 마지막/당신을 다시 데려다 줄 것입니다 현재 프로토콜과 호스트로 시작해야하는 웹 컨테이너의 루트. 알고 있어야하는 컨텍스트 경로입니다. – ndtreviv

답변

4

정확히 일치하지는 않습니다. window.location.protocol + '//' + window.location.host에는 루트 디렉토리를 나타내는 슬래시가 없습니다. 그러나 모든 의도와 목적을 위해, 그들은 상호 교환 적으로 사용될 수 있습니다. '가 80 이외의 경우

window.location.protocol + '//' + window.location.host + '/' 
window.location.href 
'//' + window.location.host + '/' //useful if you don't know the scheme and don't want to check 
'/' 

window.location.host 포트 번호를 포함, 그래서 당신은 shouldn : 당신이 <base>를 사용하지 않는 가정 실제 사용에서

, 다음은 모두 같은 장소를 가리 킵니다 그것을 포함하는 것에 대해 걱정할 필요가 없습니다. '/'을 쓰는 것이 더 간단하고 명확합니다. "이 페이지의 출처가 된 서버의 루트 디렉토리"를 항상 의미하므로 URI에 username:[email protected]과 같은 것이 포함되어 있으면 상황이 털이 나올 수 있습니다. JS를 사용하여 해당 데이터를 가져올 수있는 방법을 모르겠습니다. 개별 구성 요소에서 URI를 재구성하려고하면 코드가 이와 같은 비정상적인 환경으로 마이그레이션되는 경우 문제가 발생할 수 있습니다.

이 모든 공식 정의는 RFC3986이며, 정확히 읽지는 않습니다.

0

나는 그들이 정확하게 똑같은 것을 의미한다고 확신하지만 솔직히 말해서 나는 단지 /을 사용하는 것이 좋습니다. 그것이 의미가있는 경우 단순히 Object->Object->string + string + Object->Object->script 대신 원시 문자열이기 때문입니다.

1

단 하나의 차이점 만 있습니다. HTML 문서에 <base /> 태그가있는 경우 AJAX (적어도 jQuery는)이 태그를 고려하여 URL을 변경하는 것으로 보입니다.

다른 경우에는 둘 모두 동일하게 동작해야합니다. 그리고 어쨌든 <base>을 피해야합니다.

<head> 
    <title>untitled</title> 
    <meta http-equiv="content-type" content="text/html;charset=utf-8" /> 
    <base href="http://example.com/foo/" /> 
    <script src="http://code.jquery.com/jquery-1.8.2.min.js"></script> 
    <script>$.get("/bar");</script> 
</head> 

<body> 
    <a href="#">Base test</a> 
</body> 

</html>