2014-12-14 2 views
1

javascript를 전혀 모르는 상태에서 일부 SSI를 PHP 파일의 javascript에 삽입 할 수 있는지 궁금합니다. 약간의 이미지를 미리로드 할 스크립트가 있고 시간을두고 추가 할 수있는 일부 이미지가 항상 내 전체 사이트 (SSI를 통해)에 미리로드되도록 설정하고 싶습니다. 필요에 따라 개별 이미지를 페이지별로 추가 할 수 있습니다. 그것은 내 HTML 파일에서 잘 작동하지만 내 PHP 파일은 아닙니다. 여기 SSI를 PHP 파일의 자바 스크립트에 삽입 할 수 있습니까?

는 내가 잘 작동하는 내 HTML 파일에있어 무엇을 :

:

<script> 
    function preload(arrayOfImages) { 
     $(arrayOfImages).each(function() { 
      $('<img/>')[0].src = this; 
     }); 
    } 
    preload([ 
     <!--#include virtual="/grabbag/preload-images.html" --> 
     '/images/image-1.png', 
     '/images/image-2.png' 
    ]); 
</script> 

하지만 내 PHP 파일에서 작동하지 않습니다는 SSI는 빈 텍스트하지만 아무것도로 대체하기

<script> 
    function preload(arrayOfImages) { 
     $(arrayOfImages).each(function() { 
      $('<img/>')[0].src = this; 
     }); 
    } 
    preload([ 
     <?php include("/grabbag/preload-images.php"); ?> 
     '/images/image-1.png', 
     '/images/image-2.png' 
    ]); 
</script> 

이것이 가능합니까? 미리 감사드립니다.

+0

JavaScript가 문서를 클라이언트에 제공하기 전에 텍스트가 삽입되므로 JavaScript의 구문이 유효하다고 가정하면이 작업이 가능합니다. PHP에서 –

+0

, json_encode를 사용하여 유효한 js 목록을 만드십시오. 1, -1 슬라이스하여 json 배열에서 유효한 배열 조각을 얻을 수 있습니다. – dandavis

+0

감사합니다 @Derek 朕 會 功夫 당신이 옳았다. HTML 버전이 작동하기 때문에 뭔가 놓친 것 같습니다. 그러나 PHP 버전은 작동하지 않습니다. 나는 이것을 반영하기 위해 나의 질문을 편집했다. – Stromfeldt

답변

1

귀하의 PHP 포함 항목은 절대형입니다. 그것은 /로 시작해서 루트 (최대 경로)를 살펴보고 통과하려고 시도합니다. 상대방 또는 올바른 절대자로 변경하면 작동합니다.

+0

아, 이런, 네 말이 맞아. 바보 야. PHP 파일에서 올바른 include를 복사하여 붙여 넣었지만 잘못 복사하여 내 HTML SSI의 경로를 붙여 넣었습니다. 그래서 이것은 자바 스크립트 문제가 아니지만 바보 같은 문제입니다. 필자는 필수적인'../../'을 추가했다. 감사! (제쳐두고''/'가 HTML이 아닌 PHP에서 작동하는 이유는 모르겠다.''/ public_html /'또는 무엇인가 포함시켜야합니까?) – Stromfeldt

+0

PHP 파일의 전체 경로를 찾을 수 있습니다 http://php.net/manual/de/function.realpath.php를 사용하십시오. 그래서 당신은 realpath (null)을 include하는 것과 같은 일을 할 수 있습니다. "/"relative/path/to/file.ext "; – walialu

+0

/ssi는 문서 루트 (예 : public_html 폴더)를 가리키는 반면, PHP에서는 파일 시스템 루트 폴더를 가리 킵니다. 단순히 작동하지 않는 이유입니다. PHP 구성에 대해서는 잘 모르겠지만 포함 경로에 문서 루트가있을 수 있습니다. 그렇다면 간단하게 포함에서 선행 슬래시를 생략하면 잘 작동합니다. – walialu

관련 문제