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/ 가 해결책입니다.