자바스크립트 => php => 자바스크립트가 가능할까요?
CMS/프레임워크 | Rhymix 2.1 |
---|---|
개발 언어 | PHP 7.4 |
안녕하세요.
자동으로 삽입된 이미지 html 값으로
첨부파일을 다운로드 하는 URL을 알아내는 작업을 하고있습니다.
<p><img alt="간단.JPG" data-file-srl="1781040" editor_component="image_link" src="/files/attach/images/1089600/039/781/001/14fabd49370c0034d4b896181b5853f7.jpg" data-pswp-pid="1"></p>
위와같은 코드가 있다면 data-file-srl="1781040" 을 자바스크립트로 추출하고
1781040 추출된 이값은
다시 php로 옮긴후 FileModel::getFile(1781040)->download_url; 로실행시켜서
최종 링크 주소를 추출한후 그값을
다시 자바스크립트로 전달 하는 방식입니다.
자바스크립트에서
img.getAttribute('data-file-srl'); 값으로
data-file-srl 값을 구하고
data-file-srl 값을 php $file_srl 값에 저장하고
php 로 FileModel::getFile($file_srl)->download_url; 실행시켜서
결과값을 자바스크립트의 최종 url 값으로 지정하고 싶습니다.
애드온 파일에서 css와 js 파일을 불러오고 js파일에서 아작스를 통해 js와 애드온 php 파일을 넘나들고싶습니다.
자바스크립트와 php를 넘나드는 이 작업 가능할까요?
정 불가하다면
첨부파일의 배열까지만 만드는방법을 알면 일사천리로 진행될것 같은데
애드온에서 첨부파일 리스트의
첨부파일 명값과 링크 값을 쭉 배열로 가져와서 저장한 후 자바스크립트에서 처리가 가능할까요?

댓글 6
글 본문 html에 삽입되어 있는 내용만으로 해결하려고 하시니까
불필요하게 복잡한 구조가 나오는 것 같습니다.
JS → PHP → JS 순서를 말씀하셨는데, 사실은 글읽기 화면을 생성한 PHP가 맨 앞에 있습니다.
즉, PHP → JS → ??? 입니다. 맨 앞에 있는 PHP가 가장 막강합니다.
글읽기 화면을 생성하는 스킨에서 적당한 코드를 사용하여
각각의 file_srl에 해당하는 원본 파일명, 다운로드 경로 등을 페이지 소스에 숨겨놓을 수 있거든요.
첨부파일 배열을 var file_list = ..... 이렇게 JS 변수로 미리 뿌려 놓아도 되고,
대부분의 스킨에 있는 첨부파일 목록 섹션에서 jQuery로 내용을 추출할 수도 있습니다.
어떤 형태로든 맨 먼저 실행되는 PHP가 판을 다 깔아 놓으면,
JS에서는 html 어딘가에 숨겨져 있는 정보를 찾아서 활용하기만 하면 됩니다.
PHP → JS → 다시 PHP로 갈 필요가 없는 것입니다.
자꾸 질문드려 죄송합니다.
애드온에서
Context::loadFile(array('./addons/애드온명/js/js.js', 'body', '', null), true);
이런식으로 js를 불러오고있습니다.
애드온의 php에서
$fileArrayJson = json_encode($fileArray);
으로 json 으로 변환까지 했는데
저 변환한 json을 js에서는 아무리 해도 안땡겨와지는것 같습니다.
혹시 애드온에서 Context::loadFile(array('./addons/애드온명/js/js.js', 'body', '', null), true);
이렇게 불러온 방식이 잘못되었을까요?
js파일에서 var jsonData = <?php echo $fileArrayJson; ?>;
이걸 땡겨오는 방법이 있을까요?
애드온 php 자체에서
echo "<script>";
echo "var fileArray = " . json_encode($fileArrayJson) . ";";
echo "console.log(fileArray);";
echo "</script>";
이렇게하면 배열은 잘 땡겨오긴합니다.
저렇게 해두고 js 파일에
console.log(fileArray); 를 해도 아무것도 못가져오네요
근데 실질적인 최종 작동하는 파일은 js에 담겨있어서요.
실제 페이지 소스에서 어떤 순서로 출력되는지 확인해 보세요.
애드온 JS를 먼저 실행하고 그 후에 var fileArray 를 선언한다면 안 되겠죠.
앗 그럴수 있겠네요
감사드립니다
내일은 성공할 수 있을꺼 같은 예감이드네요
근데 js로배열을하면 소스보기에 항상 노출되는게 정상인거죠?
이거노출안되는게 좋을것같아서 php로 파일명보기
버튼들 추가하는방향으로 다시 급변침 해야겠네요ㅠ
답변 감사합니다. 역시나 php 단계에서 먼저 작업 후 자바스크립트에서 작업하는게 맞나보네요
뭔가 비슷하게나마 작동을해서 기대감을 못버리고 거의 하루를 날려먹었네요.
역시나 애드온에서 배열 하는방법을 찾아보는게 역시나 빠르겠네요.
https://xetown.com/download/666969
우선 윤삼님이 작업하신 이파일을 열어보고 어떤식으로 배열을 하고 있는지 찾아보는 방향으로 하겠습니다.
감사합니다. 기진곰님