如何在 JavaScript 中执行 PHP 代码

2022-08-30 19:57:59
<button type="button" id="okButton" onclick="funk()" value="okButton">Order now </button>
<script type="text/javascript">
    function funk(){
        alert("asdasd");
        <?php echo "asdasda";?>
    }
</script>

当按下按钮时,我想执行PHP代码(此时回显asadasda)


答案 1

你可以使用 http://phpjs.org/ http://locutus.io/php/ 它将一堆PHP功能移植到javascript,但如果它只是回声,并且脚本在php文件中,你可以做这样的事情:

alert("<?php echo "asdasda";?>");

不要担心双引号的使用看起来很不稳定,PHP会在浏览器看到它之前呈现出来。

至于使用ajax,最简单的方法是使用库,如jQuery。有了这个,你可以做:

$.ajax({
  url: 'test.php',
  success: function(data) {
    $('.result').html(data);
  }
});

和测试.php将是:

<?php 
  echo 'asdasda';
?>

它会将测试的内容写入.php任何具有该类的元素。result


答案 2

Javascript 和 PHP 的交互

我们从小就知道Javascript在客户端(即浏览器)上运行,PHP是服务器端工具(即服务器端)。显然,两者只是不能互动。

但是,好消息;它可以工作,这是如何。

目标是将一些动态信息(例如服务器配置项目)从服务器获取到Javascript环境中,以便在需要时可以使用它 - 通常这意味着对演示文稿进行DHTML修改。

首先,为了澄清DHTML的用法,我将引用这个DHTML示例:

<script type="text/javascript">

function updateContent() {
 var frameObj = document.getElementById("frameContent");
 var y = (frameObj.contentWindow || frameObj.contentDocument);

 if (y.document) y = y.document;
 y.body.style.backgroundColor="red";  // demonstration of failure to alter the display

 // create a default, simplistic alteration usinga fixed string.
 var textMsg = 'Say good night Gracy';

 y.write(textMsg);

 y.body.style.backgroundColor="#00ee00";  // visual confirmation that the updateContent() was effective

}
</script>

假设我们在某个地方有一个ID=“frameContent”的html文件,那么我们可以用一个简单的< body onload=“updateContent()”>

咕噜咕噜;我们现在不需要PHP来做到这一点,我们做吧!但这为应用PHP提供的内容创建了一个结构。

我们将有问题的网页更改为PHTML类型,以允许服务器端PHP访问内容:

**foo.html becomes foo.phtml**

然后我们添加到该页面的顶部。我们还将 php 数据加载到全局变量中以供以后访问 - 如下所示:

<?php
   global $msg1, $msg2, $textMsgPHP;

function getContent($filename) {
    if ($theData = file_get_contents($filename, FALSE)) {
        return "$theData";
    } else {
        echo "FAILED!";
        }
}
function returnContent($filename) {

  if ( $theData = getContent($filename) ) {
    // this works ONLY if $theData is one linear line (ie remove all \n)
    $textPHP = trim(preg_replace('/\r\n|\r|\n/', '', $theData));
    return "$textPHP";
  } else {
    echo '<span class="ERR">Error opening source file :(\n</span>';  # $filename!\n";
  } 
}

// preload the dynamic contents now for use later in the javascript (somewhere)
$msg1 =       returnContent('dummy_frame_data.txt');
$msg2 =       returnContent('dummy_frame_data_0.txt');
$textMsgPHP = returnContent('dummy_frame_data_1.txt');

?>

现在,我们的 javascript 可以像这样访问 PHP 全局变量:

通过 accessig the globals var textMsg = '< ?php 全局$textMsgPHP;回声“$textMsgPHP”; ?>';

在 javascript 中,替换

var textMsg = 'Say Good night Gracy';

with: // 使用 php returnContent()

var textMsg = '< ?php $msgX = returnContent('dummy_div_data_3.txt');回声“$msgX”?>';

总结:

  • 要修改的网页必须是phtml或某些php文件
  • 该文件中的第一件事必须是<?php 获取动态数据 ?>
  • php数据必须包含自己的css样式(如果内容在框架中)
  • 使用动态数据的javascript必须位于同一文件中
  • 并且我们根据需要插入/退出PHP以访问动态数据
  • 注意:- 在外部javascript中使用单引号,在动态php数据中仅使用双引号

要解决的问题:使用文件名调用 updateContent() 并通过 onClick() 而不是 onLoad() 使用它

可以在Sample_Dynamic_Frame.zip中提供一个示例供您检查,但没有找到附加它的方法