programing

외부 Javascript 파일에서 PHP var 액세스

lastmoon 2023. 7. 26. 22:23
반응형

외부 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자바스크립트 기능은 그대로 사용할 수 있습니다.

enter image description here

넌 할 수 있다.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

반응형