IT

jQuery를 사용하여 상대 경로 결정

itgroup 2023. 8. 26. 10:42
반응형

jQuery를 사용하여 상대 경로 결정

최상위 도메인의 하위 폴더에 여러 개의 워드프레스 사이트가 설치되어 있습니다.

  1. http://www.mydomain.com/site-a/
  2. http://www.mydomain.com/site-b/

각각의 AJAX 파일을 로드해야 하며 다음 코드를 사용했습니다.

// Initiate asynchronous load of xml data:
jQuery.ajax({
    type: "GET",
    url: "/wp-content/themes/mytheme/data.xml",
    dataType: "xml",
    success: parseDataXML
});

그러나 도메인의 루트 경로에서 파일을 검색하게 됩니다.

http://www.mydomain.com/wp-content/themes/mytheme/data.xml

사이트의 루트 경로 대신:

http://www.mydomain.com/site-a/wp-content/themes/mytheme/data.xml

url 경로에서 선행 "/"를 제거합니다.선행 슬래시는 "현재 폴더에서"가 아니라 "사이트 루트에서"를 의미합니다.

편집: 좋아요. 그런 다음 각 "사이트"의 루트 인덱스에서 해당 폴더 이름을 포함하도록 BASE HREF를 정의해야 합니다.그런 다음 선행 슬래시는 사이트 루트 대신 해당 값을 고려해야 합니다.

다음과 같은 위치를 확인하는 것이 가장 좋습니다.

var pathname = window.location.pathname;

그런 다음 indexOf()를 수행하여 어떤 WP 설치를 가리킬지 지정합니다.

당신이 당신의 URL을 시작했기 때문입니다./그것은 그것을 절대적인 URL로 만듭니다.상대 URL로 변경하려면 다음으로 변경합니다.url: "wp-content/themes/mytheme/data.xml",.

테스트는 안 해봤는데, 이런 것도 되나요?

var baseUrl = "http://www.mydomain.com",
    pathToDataXml = "/wp-content/themes/mytheme/data.xml",
    siteDir = window.location.href.toString()
              .replace(baseUrl, "")
              .replace(pathToDataXml, "");

// Initiate asynchronous load of xml data:
jQuery.ajax({
    type: "GET",
    url: baseUrl + siteDir + pathToDataXml,
    dataType: "xml",
    success: parseDataXML
});

가장 간단한 솔루션:

url: window.location.pathname + "/wp-content/themes/mytheme/data.xml",

만약 당신의 자바스크립트 코드가 php 파일 안에 쓰여 있다면, 다음을 사용하세요.

url: "<?php echo site_url(); ?>/wp-content/themes/mytheme/data.xml",

php 파일에서 클릭하여 AJAX 요청을 호출하는 경우 클릭 시 이를 사용합니다.

onclick="cat_ajax_get('some_value', '<?php echo site_url(); ?>');"

function cat_ajax_get(catID, ajaxurl) { 
  jQuery.ajax({
    type: "GET", 
    url: ajaxurl + "/wp-content/themes/mytheme/data.xml",
    dataType: "xml",
    success: parseDataXML
  });
}

루트 디렉터리를 정의하는 글로벌 변수를 정의할 수 있습니다(이 경우에는 적합하다고 생각합니다).

rootFolder = location.pathname.substr(0, 7) === '/site-a' ? '/site-a/' : '/site-b/';

그런 다음 이 변수를 AJAX 요청에 사용할 수 있습니다.

jQuery.ajax({
    type: "GET",
    url: rootFolder + "wp-content/themes/mytheme/data.xml",
    dataType: "xml",
    success: parseDataXML
});

window.location.pathname은 디렉토리 구조와 관련이 있습니다.많은 경우가 일이라는 것은 인정하지만 항상 그런 것은 아닙니다!
누군가가 MVC를 염두에 두고 여기까지 오게 된 것 같아서 적어 두었습니다.

제 생각에 그가 묻고 있는 것은 mvcUrl과 같은 것이 있는지 여부입니다.~/를 사용하여 하위 도메인으로 이동할 수 있는 콘텐츠입니다.저는 질문에 그런 것이 있다고 생각하지 않거나, 적어도 우연히 만난 적은 없습니다.하위 도메인을 URL로 하드 코딩해야 할 수도 있습니다.

폴더 이름 앞에 '...'를 사용할 수 있습니다.

url: "../wp-content/themes/mytheme/data.xml"

wp에서 작동했으면 좋겠습니다.일반적으로 다른 경우에도 효과가 있습니다.

언급URL : https://stackoverflow.com/questions/6283000/determining-relative-path-with-jquery

반응형