2
(수사학상의 질문)Ajax를 사용하여 Javascript 기능을 동적으로로드 할 수 있습니까?
나는 PHP가 자바 스크립트가 어떻게 작동 하는지를 업데이트하기를 원했던 기괴한 시나리오를 만났다. 그것은 여기
/*
* ajax-php-javascript-function-loader.php
*
* this gets called by AJAX and defines or re-defines the
* definition of dynamicDoStuff()
*/
<script type="text/javascript">
function dynamicDoStuff(a,b){
<?php
//dynamically defined function behavior
?>
}
</script>
새로운 자바 스크립트가로드되었을 때, 그것은 새로운 함수 정의의 범위를 때문에이 작동하지 않았다가 새 스크립트 태그로 제한 ... 내가 뭘하려 자극적이었다. 페이지의 다른 곳에서 스크립트를 읽을 수 없습니다.
여기해야 할 일이 있습니다.
/*
* index.html
*/
<html>
<head>
<script type="text/javascript">
var dynamicDoStuff;
</script>
<!-- Other Head Stuff -->
</head>
<body>
<!-- the body of the site -->
</body>
</html>
및
/*
* axax-php-javascript-function-loader.php
*/
<script type="text/javascript">
dynamicDoStuff = function(a,b){
<?php
//dynamically define function behavior
?>
}
</script>
헤더에있는 함수의 이름을 정의하여 전 세계적으로 접근하게 당신은 동적으로 아약스를 사용 (PHP 또는 무엇이든)
당신이 묘사하는 행동은 ajax 응답 내의'
더 좋은 방법은이 경우, 플래그는 질문에 당신의 방법을 채택해야하는 동작을 나타내는, 당신의 AJAX 방식의 반환 데이터 가질 수 있습니다.
적어도 대부분의 상황에서 AJAX 메서드는 어쨌든 데이터를 반환해야합니다.
또한이 방법을 사용하면 PHP로 JavaScript를 믹싱하는 대신 클라이언트가 이미로드 한 일반 JavaScript 파일에 필요한 대체 동작을 정의 할 수 있습니다.
출처
2010-01-26 00:12:00
분명히 이것은 대부분의 상황에 해당됩니다. 필자의 경우 PHP로 내용을 작성한 Prototype 창을로드하고있었습니다. 프로토 타입 윈도우 내의 요소의 동작은 사용자가 누구인지, 지금까지 무엇을했는지, 그리고 그들이 무엇을 보았는지 등 다양한 요인에 의해 결정됩니다. 가장 간단한 경로는 동작을 직접 정의하는 것이 었습니다. 나는 다른 상황, 특히 역동적이거나 폐회로 인 상황을 상상할 수 있는데, 이것은 유용 할 것이다. – Brooks
또한 ...이 디자인 패턴은 기능이 모호하게 정의되고 해당 모듈의 아젠다에 맞게 (즉, 동적으로로드 및 언로드되도록) 즉석에서 사용자 정의 할 수 있으므로 많은 모듈성을 허용합니다. – Brooks