복붙노트

PHP에서 JavaScript로 변수 가져 오기 [duplicate]

PHP

PHP에서 JavaScript로 변수 가져 오기 [duplicate]

자바 스크립트에서 PHP 변수를 사용하고 싶습니다. 그게 어떻게 가능해?

해결법

  1. ==============================

    1.페이지가 생성되는 동안 자바 스크립트에 PHP 변수를 인쇄 할 수 있습니다.

    페이지가 생성되는 동안 자바 스크립트에 PHP 변수를 인쇄 할 수 있습니다.

    <script type="text/javascript">
        var MyJSStringVar = "<?php Print($MyPHPStringVar); ?>";
        var MyJSNumVar = <?php Print($MyPHPNumVar); ?>;
    </script>
    

    물론 이것은 단순 변수가 아니라 객체를위한 것입니다.

  2. ==============================

    2.PHP 변수를 PHP로 생성하여 JavaScript에 전달할 수 있습니다.

    PHP 변수를 PHP로 생성하여 JavaScript에 전달할 수 있습니다.

    <?php
    $someVar = 1;
    ?>
    
    <script type="text/javascript">
        var javaScriptVar = "<?php echo $someVar; ?>";
    </script>
    
  3. ==============================

    3.가장 쉬운 방법은 웹 페이지에 jQuery 자바 스크립트 라이브러리를 포함시킨 다음 JSON을 형식 사이에서 데이터를 전달하는 데 사용하는 것입니다.

    가장 쉬운 방법은 웹 페이지에 jQuery 자바 스크립트 라이브러리를 포함시킨 다음 JSON을 형식 사이에서 데이터를 전달하는 데 사용하는 것입니다.

    HTML 페이지에서 다음과 같이 PHP 스크립트의 데이터를 요청할 수 있습니다.

    $.getJSON('http://foo/bar.php', {'num1': 12, 'num2': 27}, function(e) {
        alert('Result from PHP: ' + e.result);
    });
    

    bar.php에서 다음과 같이 할 수 있습니다 :

    $num1 = $_GET['num1'];
    $num2 = $_GET['num2'];
    echo json_encode(array("result" => $num1 * $num2));
    

    이것은 보통 AJAX라고 불리는 것이며, 웹 페이지에 더 많은 것을 제공하는 것이 유용합니다. 동적 및 데스크탑과 같은 느낌 (전체 페이지를 새로 고침 할 필요가 없습니다. PHP 포함).

    다른 기술은 더 간단합니다. 다른 사람들이 제안했듯이, 당신은 단순히 PHP 스크립트의 변수 데이터 :

    $foo = 123;
    echo "<script type=\"text/javascript\">\n";
    echo "var foo = ${foo};\n";
    echo "alert('value is:' + foo);\n";
    echo "</script>\n";
    

    요즘 대부분의 웹 페이지는이 둘의 조합을 사용합니다.

  4. ==============================

    4.그것은 자바 스크립트에서 사용하고자하는 PHP 변수의 유형에 달려 있습니다. 예를 들어 클래스 메서드가있는 전체 PHP 객체는 Javascript에서 사용할 수 없습니다. 그러나 내장 PHP JSON (JavaScript Object Notation) 함수를 사용하여 간단한 PHP 변수를 JSON 표현으로 변환 할 수 있습니다. 자세한 내용은 다음 링크를 참조하십시오.

    그것은 자바 스크립트에서 사용하고자하는 PHP 변수의 유형에 달려 있습니다. 예를 들어 클래스 메서드가있는 전체 PHP 객체는 Javascript에서 사용할 수 없습니다. 그러나 내장 PHP JSON (JavaScript Object Notation) 함수를 사용하여 간단한 PHP 변수를 JSON 표현으로 변환 할 수 있습니다. 자세한 내용은 다음 링크를 참조하십시오.

    PHP 변수의 JSON 표현을 생성 한 다음 페이지가로드 될 때 Javascript 코드에 인쇄 할 수 있습니다. 예 :

    <script type="text/javascript">
      var foo = <?php echo json_encode($bar); ?>;
    </script>
    
  5. ==============================

    5.

    <?php 
    $j=1;
    ?>
    <script>
    var i = "<?php echo $j; ?>";
    //Do something
    </script>
    <?php
    echo $j;
    ?>
    

    이것은 PHP 변수를 Ajax없이 자바 스크립트로 전달하는 가장 쉬운 방법입니다.

    다음과 같이 사용할 수도 있습니다.

    var i = "<?php echo json_encode($j); ?>";
    

    이것은 더 안전하거나 더 안전하다고 말했습니다. 나는 생각한다.

  6. ==============================

    6.업데이트 :이 답변을 완전히 다시 작성했습니다. 오래된 코드는 여전히 바닥에 있지만 권장하지는 않습니다.

    업데이트 :이 답변을 완전히 다시 작성했습니다. 오래된 코드는 여전히 바닥에 있지만 권장하지는 않습니다.

    GET 변수에 액세스 할 수있는 두 가지 주요 방법은 다음과 같습니다.

    PHP를 사용하면 다음과 같은 "템플릿"을 만들 수 있습니다.

    <script type="text/javascript">
    var $_GET = JSON.parse("<?php echo json_encode($_GET); ?>");
    </script>
    

    그러나, 나는 여기 언어의 혼합이 조잡하다고 생각하고 가능하면 피해야한다. 어쨌든 PHP와 자바 스크립트간에 데이터를 섞어 야 할 이유가 없다고 생각합니다.

    그것은 정말로 이것으로 귀결됩니다.

    여기서 우리가 $ _GET에 대해 이야기하고 있기 때문에 (또는 적어도 원래의 답변을 작성했을 때라고 가정했을 때) JavaScript를 통해 가져와야합니다.

    원래 답에서는 쿼리 문자열을 가져 오는 두 가지 방법이 있었지만 너무 복잡하고 오류가 발생하기 쉽습니다. 그것들은 이제이 대답의 맨 아래에 있습니다.

    어쨌든, 나는 쿼리 문자열 (실제로 객체 생성자, MDN의 OOP 기사에서 관련 섹션 참조)을 얻기위한 멋진 작은 "클래스"를 설계했습니다.

    function QuerystringTable(_url){
        // private
        var url   = _url,
            table = {};
    
        function buildTable(){
            getQuerystring().split('&').filter(validatePair).map(parsePair);
        }
    
        function parsePair(pair){
            var splitPair = pair.split('='),
                key       = decodeURIComponent(splitPair[0]),
                value     = decodeURIComponent(splitPair[1]);
    
            table[key] = value;
        }
    
        function validatePair(pair){
            var splitPair = pair.split('=');
    
            return !!splitPair[0] && !!splitPair[1];
        }
    
        function validateUrl(){
            if(typeof url !== "string"){
                throw "QuerystringTable() :: <string url>: expected string, got " + typeof url;
            }
    
            if(url == ""){
                throw "QuerystringTable() :: Empty string given for argument <string url>";
            }
        }
    
        // public
        function getKeys(){
            return Object.keys(table);
        }
    
        function getQuerystring(){
            var string;
    
            validateUrl();
            string = url.split('?')[1];
    
            if(!string){
                string = url;
            }
    
            return string;
        }
    
        function getValue(key){
            var match = table[key] || null;
    
            if(!match){
                return "undefined";
            }
    
            return match;
        }
    
        buildTable();
        this.getKeys        = getKeys;
        this.getQuerystring = getQuerystring;
        this.getValue       = getValue;
    }
    

    JS 휘티 d 혀라도

    function main () {     var imaginaryUrl = "http://example.com/webapp/?search=how%20to%20use%20Google&the_answer=42",         qs = 새로운 QuerystringTable (imaginaryUrl);     urlbox.innerHTML = "url :"+ imaginaryUrl;          logButton (         "qs.getKeys ()",         qs.getKeys ()         .map (화살촉)         .join ( "\ n")     );          logButton (         'qs.getValue ( "search")',         qs.getValue ( "search")         .arrowify ()     );          logButton (         'qs.getValue ( "the_answer")',         qs.getValue ( "the_answer")         .arrowify ()     );          logButton (         "qs.getQuerystring ()",         qs.getQueryystring ()         .arrowify ()     ); } 함수 화살 (str) {     return "->"+ str; } String.prototype.arrowify = function () {     return arrowify (this); } 기능 로그 (msg) {     txt.value + = msg + '\ n';     txt.scrollTop = txt.scrollHeight; } 함수 logButton (이름, 출력) {     var el = document.createElement ( "button");          el.innerHTML = name;          el.onclick = function () {         로그 (이름);         로그 (출력);         log ( "- - -");     }          buttonContainer.appendChild (el); } function QuerystringTable (_url) {     // private     var url = _url,         표 = {};     함수 buildTable () {         getQuerystring (). split ( '&'). filter (validatePair) .map (parsePair);     }     함수 parsePair (쌍) {         var splitPair = pair.split ( '='),             key = decodeURIComponent (splitPair [0]),             값 = decodeURIComponent (splitPair [1]);         테이블 [키] = 값;     }     function validatePair (쌍) {         var splitPair = pair.split ( '=');         return !! splitPair [0] && !! splitPair [1];     }     function validateUrl () {         if (typeof url! == "string") {             throw "QuerystringTable () :: : 예상 문자열,"+ typeof url;         }         if (url == "") {             throw "QuerystringTable () :: 빈 문자열 ";         }     }     // 공공의     function getKeys () {         return Object.keys (table);     }     function getQuerystring () {         var 문자열;         validateUrl ();         string = url.split ( '?') [1];         if (! string) {             string = url;         }         반환 문자열;     }     함수 getValue (key) {         var match = table [key] || 없는;         if (! match) {             return "undefined";         }         리턴 매치;     }     buildTable ();     this.getKeys = getKeys;     this.getQuerystring = getQuerystring;     this.getValue = getValue; } 본관(); #urlbox {     너비 : 100 %;     패딩 : 5px;     여백 : 10px 자동;     글꼴 : 12px 모노 스페이스;     배경 : #fff;     색상 : # 000; } #txt {     너비 : 100 %;     높이 : 200px;     패딩 : 5px;     여백 : 10px 자동;     크기 조정 : 없음;     국경 : 없음;     배경 : #fff;     색상 : # 000;     displaY : 블록; } 단추{     패딩 : 5px;     여백 : 10px;     너비 : 200px;     배경 : #eee;     색상 : # 000;     국경 : 1 픽셀 고체 #ccc;     디스플레이 : 블록; } 버튼 : hover {     배경 : #fff;     커서 : 포인터; }