programing

PHP에서 JavaScript 함수를 호출하려면 어떻게 해야 합니까?

randomtip 2022. 9. 11. 16:45
반응형

PHP에서 JavaScript 함수를 호출하려면 어떻게 해야 합니까?

PHP에서 JavaScript 함수를 호출하려면 어떻게 해야 합니까?

<?php

  jsfunction();
  // or
  echo(jsfunction());
  // or
  // Anything else?

다음 코드는 xyz의 코드입니다.html(버튼 클릭으로)를 호출한다.wait()외부 xyz.2011로 설정합니다.이것.wait()콜이 대기합니다.php.

function wait() 
{
  xmlhttp=GetXmlHttpObject();
  var url="wait.php"; \
  xmlhttp.onreadystatechange=statechanged; 
  xmlhttp.open("GET", url, true); 
  xmlhttp.send(null);
} 

function statechanged()
{ 
  if(xmlhttp.readyState==4) {
       document.getElementById("txt").innerHTML=xmlhttp.responseText;
  }
}

그리고 기다려.php

<?php echo "<script> loadxml(); </script>"; 

어디에loadxml()같은 방법으로 다른 PHP 파일에서 코드를 호출합니다.

loadxml()그 외에는 정상적으로 동작하고 있지만, 내가 원하는 대로 불리지 않습니다.

PHP(또는 실제로 웹 서버)에 관한 한 HTML 페이지는 큰 문자열보다 복잡하지 않습니다.

PHP와 같은 언어로 할 수 있는 모든 화려한 작업 - 데이터베이스나 웹 서비스에서 읽는 것, 그리고 그 모든 것 - 궁극적인 최종 목표는 정확히 동일한 기본 원칙: HTML* 문자열 생성입니다.

큰 HTML 문자열은 웹 브라우저에 의해 로드될 때까지 더 이상 특별한 문자열이 되지 않습니다.일단 브라우저가 페이지를 로드하면 레이아웃, 박스 모델 내용, DOM 생성 및 JavaScript 실행을 포함한 많은 다른 마법이 발생합니다.

따라서 "PHP에서 JavaScript를 호출"하는 것이 아니라 "출력에 JavaScript 함수 호출을 포함합니다."

여러 가지 방법이 있지만 몇 가지 방법이 있습니다.

PHP만 사용하는 경우:

echo '<script type="text/javascript">',
     'jsfunction();',
     '</script>'
;

php 모드에서 직접 출력 모드로 이스케이프:

<?php
    // some php stuff
?>
<script type="text/javascript">
    jsFunction();
</script>

함수 이름 등을 반환할 필요는 없습니다.우선 AJAX 요청 수작업은 중지합니다.당신은 당신 자신을 힘들게만 하고 있어요.jQuery 또는 기타 뛰어난 프레임워크 중 하나를 가져옵니다.

둘째, AJAX 콜에서 응답이 수신되면 이미 javascript 코드를 실행하고 있음을 이해하십시오.

다음은 jQuery의 AJAX로 무엇을 하고 있는지 예시입니다.

$.get(
    'wait.php',
    {},
    function(returnedData) {
        document.getElementById("txt").innerHTML = returnedData;

        //  Ok, here's where you can call another function
        someOtherFunctionYouWantToCall();

        // But unless you really need to, you don't have to
        // We're already in the middle of a function execution
        // right here, so you might as well put your code here
    },
    'text'
);

function someOtherFunctionYouWantToCall() {
    // stuff
}

PHP에서 AJAX 호출로 함수 이름을 다시 보내는 데 문제가 있는 경우 이 작업을 수행할 수도 있습니다.

$.get(
    'wait.php',
    {},
    function(returnedData) {
        // Assumes returnedData has a javascript function name
        window[returnedData]();
    },
    'text'
);

* 또는 JSON 또는 XML 등

그냥 항상 쓰고 있어요.echo "<script> function(); </script>";뭐 비슷한 거.엄밀히 말하면 PHP에서 함수를 호출하는 것은 아니지만, 이것은 당신이 얻을 수 있는 것 중 가장 가까운 것입니다.

현재(2012년 2월)에는 새로운 기능이 있습니다.여기를 체크해 주세요

코드 샘플(웹에서 가져온):

<?php

$v8 = new V8Js();

/* basic.js */
$JS = <<< EOT
len = print('Hello' + ' ' + 'World!' + "\\n");
len;
EOT;

try {
  var_dump($v8->executeString($JS, 'basic.js'));
} catch (V8JsException $e) {
  var_dump($e);
}

?>

그럴수는 없어요.PHP에 의해 출력되는 HTML에서 JS 함수를 호출할 수 있지만, 그것은 전혀 '그것'이 아닙니다.

나중에 실행할 수 있도록 에코아웃을 해도 괜찮습니다.

JS를 실행하고 PHP에서 결과를 사용하려면 V8을 사용하십시오.JS

V8Js::registerExtension('say_hi', 'print("hey from extension! "); var said_hi=true;', array(), true);
$v8 = new V8Js();
$v8->executeString('print("hello from regular code!")', 'test.php');
$v8->executeString('if (said_hi) { print(" extension already said hi"); }');

자세한 내용은 여기를 참조해 주세요.php v8js 확장이란?

HTML&J 를 실행하고, PHP 로 출력을 사용하고 싶은 경우는, http://htmlunit.sourceforge.net/ 가 해결책입니다.

그건 불가능해요.PHP는 서버 측 언어 및 JavaScript 클라이언트 측이며 서로에 대해 잘 알지 못합니다.서버측 JavaScript 인터프리터(Aptanas Jaxer 등)가 필요합니다.아마 당신이 실제로 하고 싶은 것은 아키텍처와 같은 Ajax를 사용하는 것일 것이다(JavaScript 함수는 PHP 스크립트를 비동기적으로 호출하고 그 결과로 무언가를 한다).

<td onClick= loadxml()><i>Click for Details</i></td>

function loadxml()
{
    result = loadScriptWithAjax("/script.php?event=button_clicked");
    alert(result);
}

// script.php
<?php
    if($_GET['event'] == 'button_clicked')
        echo "\"You clicked a button\"";
?>

이렇게 해보다

<?php
 if(your condition){
     echo "<script> window.onload = function() {
     yourJavascriptFunction(param1, param2);
 }; </script>";
?>

이것도 시도해 보세요.-

    public function PHPFunction()
    {
            echo '<script type="text/javascript">
                 test();
            </script>'; 
    }
    <script type="text/javascript">
    public function test()
    {
        alert('In test Function');
    }
    </script>

나는 반대론자들의 대답을 받아들이지 않는다.

만약 여러분이 그것을 작동시키는 특별한 패키지를 발견한다면, 여러분은 스스로 그것을 할 수 있습니다!그래서 난 그 대답을 믿지 않아.

onClick최종사용자와 관련된 크러지이므로 허용되지 않습니다.

@umesh는 아슬아슬했지만 단독 프로그램은 아니었다.다음은 (그의 답변에서 인용한) 다음과 같습니다.

<script type="text/javascript">
function JSFunction() {
    alert('In test Function');   // This demonstrates that the function was called
}
</script>

<?php
// Call a JS function "from" php

if (true) {   // This if() is to point out that you might
              // want to call JSFunction conditionally
    // An echo like this is how you implant the 'call' in a way
    // that it will be invoked in the client.
    echo '<script type="text/javascript">
         JSFunction();
    </script>';
}

서버에서 PHP가 실행됩니다.JavaScript는 클라이언트에서 실행됩니다.따라서 php는 JavaScript 함수를 호출할 수 없습니다.

직접 할 수는 없지만 Xajax 라이브러리는 원하는 것에 매우 가깝습니다.예를 들어 설명하겠습니다.웹 페이지의 단추는 다음과 같습니다.

<button onclick="xajax_addCity();">Add New City</button> 

우리의 직관적인 추측으로는xajax_addCity()Javascript 수?? 자작스라 기능 거예요.xajax_addCity(), PHP의 은 「PHP」라고 addCity()PHP php php php php php! !!! !!!

<?php function addCity() { echo "Wow!"; } ?>

잠시만 생각해 보세요.Javascript 코드에서 PHP 함수를 호출하고 있습니다!너무 단순화된 예시는 단지 식욕을 돋우기 위한 것이었고, 더 나은 설명은 Xajax 사이트에 있습니다, 즐기세요!

일부 백엔드 노드 처리의 경우 셸을 통해 JS 스크립트를 실행하고 console.log를 통해 결과를 PHP로 반환할 수 있습니다.

  function executeNode($script)
  {
    return shell_exec('node -e \'eval(Buffer.from("'.base64_encode($script).'", "base64").toString())\'');
  }


  $jsCode = 'var a=1; var b=2; console.log(a+b);';
  
  echo executeNode($jsCode);

언급URL : https://stackoverflow.com/questions/1045845/how-to-call-a-javascript-function-from-php

반응형