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
'programing' 카테고리의 다른 글
Mariadb 업데이트 문을 실행하는 동안 오류가 발생했습니다. (0) | 2022.09.11 |
---|---|
Python 종료 코드 (0) | 2022.09.11 |
chars [ ]와 char *의 차이점은 무엇입니까? (0) | 2022.09.11 |
Laravel의 웅변적인 "IN" 쿼리를 만드는 방법 (0) | 2022.09.11 |
PHP에서 16진수 색상을 RGB 값으로 변환 (0) | 2022.09.11 |