복붙노트

자바 스크립트에서 PHP 함수 호출하기

PHP

자바 스크립트에서 PHP 함수 호출하기

JS 함수를 통해 PHP 함수를 실행할 수있는 방법이 있습니까?

이 같은:

<script type="text/javascript">
function test(){
document.getElementById("php_code").innerHTML="<?php 
query("hello");       ?>";    
}
</script>

<a href="#" style="display:block; color:#000033; font-family:Tahoma; font-size:12px;"     
onclick="test(); return false;"> test </a>
<span id="php_code"> </span>

기본적으로 php 함수를 호출하는 "Test"라는 href를 클릭하면 PHP 함수 쿼리 ( "hello")를 실행하려고합니다.

해결법

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

    1.

    본질적으로 AJAX가 필요한 것입니다. 페이지가로드되고 요소에 이벤트를 추가합니다. 사용자가 이벤트를 트리거 할 때, 예를 들어 무언가를 클릭하면 Javascript는 XMLHttpRequest 객체를 사용하여 서버에 요청을 보냅니다.

    서버가 응답 한 후 (아마 출력과 함께), 다른 JavaScript 기능 / 이벤트는 다른 HTML과 마찬가지로 페이지에 단순히 고정하는 것을 포함하여 출력에 대한 작업 공간을 제공합니다.

    일반 Javascript로 "손으로"할 수도 있고 jQuery를 사용할 수도 있습니다. 프로젝트의 크기와 특정 상황에 따라 일반 자바 스크립트를 사용하는 것이 더 간단 할 수 있습니다.

    이 아주 기본적인 예제에서 사용자가 링크를 클릭하면 myAjax.php에 요청을 보냅니다. 서버는 일부 콘텐츠 (이 경우 "hello world!")를 생성합니다. id 출력으로 HTML 요소에 넣을 것입니다.

    자바 스크립트

    // handles the click event for link 1, sends the query
    function getOutput() {
      getRequest(
          'myAjax.php', // URL for the PHP file
           drawOutput,  // handle successful request
           drawError    // handle error
      );
      return false;
    }  
    // handles drawing an error message
    function drawError() {
        var container = document.getElementById('output');
        container.innerHTML = 'Bummer: there was an error!';
    }
    // handles the response, adds the html
    function drawOutput(responseText) {
        var container = document.getElementById('output');
        container.innerHTML = responseText;
    }
    // helper function for cross-browser request object
    function getRequest(url, success, error) {
        var req = false;
        try{
            // most browsers
            req = new XMLHttpRequest();
        } catch (e){
            // IE
            try{
                req = new ActiveXObject("Msxml2.XMLHTTP");
            } catch(e) {
                // try an older version
                try{
                    req = new ActiveXObject("Microsoft.XMLHTTP");
                } catch(e) {
                    return false;
                }
            }
        }
        if (!req) return false;
        if (typeof success != 'function') success = function () {};
        if (typeof error!= 'function') error = function () {};
        req.onreadystatechange = function(){
            if(req.readyState == 4) {
                return req.status === 200 ? 
                    success(req.responseText) : error(req.status);
            }
        }
        req.open("GET", url, true);
        req.send(null);
        return req;
    }
    

    HTML

    <a href="#" onclick="return getOutput();"> test </a>
    <div id="output">waiting for action</div>
    

    PHP는

    // file myAjax.php
    <?php
      echo 'hello world!';
    ?>
    

    사용해보기 : http://jsfiddle.net/GRMule/m8CTk/

    아마 Javascript 코드가 많이 있습니다. 물론 블록을 조이거나 간결한 논리 연산자를 사용하여이를 단축 할 수는 있지만 여전히 많이 진행되고 있습니다. 프로젝트에서 이러한 유형의 작업을 많이 수행하려는 경우 자바 스크립트 라이브러리를 사용하는 것이 좋습니다.

    위에 나온 HTML과 PHP를 사용하면이 스크립트가 전체 스크립트입니다 (jQuery가 페이지에 포함되어 있음). jQuery의 일반적인 스타일과 일관성을 유지하기 위해 코드를 좀 더 강화했지만 아이디어는 얻을 수 있습니다.

    // handles the click event, sends the query
    var function getOutput() {
       $.ajax({
          url:'myAjax.php',
          complete: function (response) {
              $('#output').html(response.responseText);
          },
          error: function () {
              $('#output').html('Bummer: there was an error!');
          }
      });
      return false;
    }
    

    사용해보기 : http://jsfiddle.net/GRMule/WQXXT/

    아직 jQuery를 사용하지 마십시오. 라이브러리를 추가하면 작성한 코드처럼 프로젝트에 수백 또는 수천 줄의 코드가 추가됩니다. jQuery 라이브러리 파일 안에는 첫 번째 예제와 비슷한 코드와 훨씬 더 많은 코드가있다. 그것은 좋은 일일 수도 있습니다. 그렇지 않을 수도 있습니다. 프로젝트의 현재 크기와 향후 확장 가능성 및 대상 환경 또는 플랫폼을 계획하고 고려하십시오.

    이 모든 작업을 수행해야한다면 일반 자바 스크립트를 한 번 작성하면됩니다.

    선적 서류 비치

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

    2.

    PHP는 서버에서 평가됩니다. 자바 스크립트는 클라이언트 / 브라우저에서 평가되므로 자바 스크립트에서 직접 PHP 함수를 호출 할 수 없습니다. 하지만 AJAX를 사용하여 PHP 기능을 활성화 할 서버에 HTTP 요청을 보낼 수 있습니다.

  3. ==============================

    3.

    JS에서 PHP를 실행하는 유일한 방법은 AJAX입니다. 서버에 데이터를 보낼 수 있습니다 (예 : GET /ajax.php?do=someFunction). 그런 다음 ajax.php에서 다음과 같이 작성합니다.

    function someFunction() {
        echo 'Answer';
    }
    
    if ($_GET['do'] === "someFunction") {
        someFunction();
    }
    

    그런 다음 JS (나는 jQuery를 사용하여 AJAX 요청을 작성하고있다)

    아마 당신은 어떤 형식의 응답이 필요할 것입니다. JSON 또는 XML을 참조하십시오.하지만 JSON은 JavaScript와 함께 사용하기 쉽습니다. PHP에서는 json_encode ($ array) 함수를 사용할 수 있습니다. 인수로 배열을 가져옵니다.

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

    4.

    나는 최근에 다양한 방법으로 PHP 함수 호출을 할 수있게 해주는 jQuery 플러그인을 공개했다 : https://github.com/Xaxis/jquery.php

    간단한 예제 사용법 :

    // Both .end() and .data() return data to variables
    var strLenA = P.strlen('some string').end();
    var strLenB = P.strlen('another string').end();
    var totalStrLen = strLenA + strLenB;
    console.log( totalStrLen ); // 25
    
    // .data Returns data in an array
    var data1 = P.crypt("Some Crypt String").data();
    console.log( data1 ); // ["$1$Tk1b01rk$shTKSqDslatUSRV3WdlnI/"]
    
  5. from https://stackoverflow.com/questions/7165395/call-php-function-from-javascript by cc-by-sa and MIT lisence