외부 Javascript 파일에서 PHP var 액세스
다음과 같이 Javascript로 PHP var에 액세스할 수 있습니다.
<?php
$fruit = "apple";
$color = "red";
?>
<script type="text/javascript">
alert("fruit: " + "<?php echo $fruit; ?>"); // or shortcut "<?= $fruit ?>"
</script>
하지만 외부 JS 파일을 사용하려면 어떻게 해야 합니까?
<script type="text/javascript" src="externaljs.js"></script>
외부 jsjs:
alert("color: " + "<?php echo $color; ?>");
당신은 실제로 그것에 접속하지 않고, 페이지를 서비스할 때 자바스크립트 코드에 삽입합니다.
그러나 다른 자바스크립트가 외부 소스가 아닌 경우 다음과 같은 작업을 수행할 수 있습니다.
<?php
$color = "Red";
?>
<script type="text/javascript">var color = "<?= $color ?>";</script>
<script type="text/javascript" src="file.js"></script>
그런 다음 파일에서.js는 다음과 같은 색을 사용합니다.
alert("color: " + color);
당신은 자바스크립트(여기서 jQuery를 사용)에서 php 스크립트의 데이터에 액세스할 수도 있습니다.
다음과 같이 php 파일 내에 입력 숨겨진 필드를 만듭니다.
<input type="hidden" id="myPhpValue" value="<?php echo $myPhpValue ?>" />
Javascript 파일:
var myPhpValue = $("#myPhpValue").val();
//From here you can the whaterver you like with you js Value
if(myPhpValue != ''){
//Do something here
}
이것도 그 일을 할 것입니다 :)
제가 본 것은 .js 파일이 php 인터프리터를 통해 실행되도록 하는 것입니다.제가 추천할 수 없는.
제가 추천하는 것은 AJAX를 통해 값을 가져오고 PHP 파일이 값을 JS 파일로 반환하도록 하는 것입니다.그게 훨씬 깨끗한 방법입니다.
우선 어떤 프로그램도 다른 프로그램의 변수에 실제로 액세스할 수 없다는 것을 이해해야 합니다.
당신이 그것을 깨달았을 때, 나머지는 간단합니다.
한 이 수 .
당신이 원하는 것은 비동기 자바스크립트와 XML(AJAX)입니다. http://www.w3schools.com/ajax/default.aspa
기본적으로 클라이언트 JavaScript에서 서버의 PHP 스크립트로 메시지를 보낼 수 있다고 상상해 보십시오.제공한 예제(externaljs.js)에서 스크립트는 HTTP를 통해 서버에 $color가 무엇인지 묻도록 합니다.원하는 JavaScript를 생성하는 PHP 스크립트에 스크립트 태그를 가리킬 수도 있습니다.그것은 당신이 무엇을 해야 하는지에 달려 있습니다.
오염 확인, 데이터 확인 및 보안에 대한 이해를 높이는 데 도움이 됩니다 ;)
다른 사람들이 말하고 있듯이, 자바스크립트는 php 변수에 접근할 수 없습니다.그러나 DOM에 액세스할 수 있습니다.따라서 php를 사용하여 일부 페이지 요소에 속성을 추가할 수 있습니다.그런 다음 Javascript를 사용하여 속성에 액세스할 수 있습니다.
예<div id='apple' class='red'>Javascript Javascript에서 완전히 할 수 .
Don 솔루션이 좋습니다. 또한 외부 자바스크립트에서 php 배열을 사용하려면 다음과 같은 도움이 될 수 있습니다.
PHP:
<?php
$my_php_array = [];
?>
HTML:
<script type="text/javascript"> var my_js_array = <?php echo json_encode($my_php_array);?> ; </script>
<script src = "../public/js/my-external-js.js"></script>
Javascript: (이제 일반 Javascript 배열처럼 배열을 사용할 수 있습니다.)
my_js_array[0]
my_js_array.length
externaljs.js는 정적 파일입니다.물론 그것은 PHP 데이터에 접근할 수 없습니다.PHP 데이터를 js 파일로 전달하는 유일한 방법은 PHP 스크립트에 파일을 작성하여 물리적으로 변경하는 것이지만, 이것은 기껏해야 지저분한 해결책입니다.
올라퍼 와이지의 답변에 따라 편집: js 파일에 쓰는 것만이 유일한 방법은 아닌 것 같습니다.PHP 인터프리터를 통해 js를 전달하는 것은 (좋은 이유로) 제 머릿속을 떠나지 않았습니다.
<script type="text/javascript" src="externaljs.js"></script>
로 변경할 수 있습니다.
<script type="text/javascript" src="externaljs.php"></script>
그리고 PHP 스크립트는 다음과 같이 자바스크립트를 작성할 수 있습니다.
<?php
$fruit = "apple";
echo 'var fruit = '.json_encode($fruit);
...
비록 Sepher Lajevardi가 말한 것처럼 AJAX를 사용하는 것이 훨씬 깨끗할 것입니다.
2017-2018 이상 솔루션:
아직 아무도 그 얘기를 꺼내지도 않았고 기능을 결합할 생각도 없었던 것 같습니다.base64_encode그리고.json_encode그러나 다음과 같은 PHP 배열 변수를 보낼 수도 있습니다.
색인.
<?php
$string = "hello";
$array = ['hi', 'how', 'are', 'you'];
$array = base64_encode(json_encode($array));
그런 다음 다음과 같은 쿼리 문자열에 대한 매개 변수를 사용하여 원하는 js 파일을 로드할 수 있습니다.
echo '<script type="text/javascript" src="js/main.php?string='.$string.'&array='.$array.'">';
그리고나서js/main.php예를 들어 다음과 같습니다.다음과 같은 방법으로 변수를 테스트할 수 있습니다.
js/main.dll
<?php
if ($_GET['string']) {
$a = $_GET['string'];
}
if ($_GET['array']) {
$b = $_GET['array'];
}
$b = json_decode(base64_decode($b));
echo 'alert("String $a: + '.$a.'");';
echo 'alert("First key of Array $array: + '.$b[0].'");';
exit();
?>
를 열면 다음이 출력됩니다.index.php그러니깐, 당신은 문을 열지 않습니다.js/main.php자바스크립트 기능은 그대로 사용할 수 있습니다.
넌 할 수 있다.include()당신이 다른 어떤 것을 하듯이 그들은.
<?php
$fruit = "apple";
$color = "red";
?>
<script type="text/javascript">
<?php include('/path/to/your/externaljs.js'); ?>
</script>
이렇게 하면 기본적으로 외부 파일이 인라인 js로 렌더링됩니다.여기서 가장 큰 단점은 브라우저 캐싱의 잠재적인 성능 이점을 잃게 된다는 것입니다.반면에 자바스크립트로 php 변수를 다시 선언하는 것보다 훨씬 쉽습니다.
권장되는 접근 방식이 아니므로 그렇게 할 수 없으며 시도하지 마십시오. 그러나 외부 js로 작성된 기능을 위해 php 변수를 함수 매개 변수로 전달할 수 있습니다.
언급URL : https://stackoverflow.com/questions/2928827/access-php-var-from-external-javascript-file
'programing' 카테고리의 다른 글
| 도커 데몬 로그는 어디에 있습니까? (0) | 2023.07.31 |
|---|---|
| 매개 변수가 있는 PHP 생성자 (0) | 2023.07.26 |
| 목록의 *모든* 항목에 대한 장고 필터 쿼리 집합 __in (0) | 2023.07.26 |
| Oracle SQL 개발자에서 사용자를 생성하는 방법 (0) | 2023.07.26 |
| jQuery has Class() - 둘 이상의 클래스를 확인합니다. (0) | 2023.07.26 |
