20
<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)

4

10 回答 10

17

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

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

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

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

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

和 test.php 将是:

<?php 
  echo 'asdasda';
?>

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

于 2012-09-19T16:24:40.550 回答
5

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');

?>

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

// 通过访问全局变量 var textMsg = '< ? php 全局 $textMsgPHP; echo "$textMsgPHP"; ? >';

在javascript中,替换

var textMsg = '说晚安格雷西';

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 中可以提供一个示例供您检查,但没有找到附加方法

于 2013-12-27T19:01:32.180 回答
3

您不能使用 javascript 运行 PHP。JavaScript 是一种客户端技术(在用户浏览器中运行),而 PHP 是一种服务器端技术(在服务器上运行)。

如果你想这样做,你必须向 PHP 脚本发出 ajax 请求,并让它返回你正在寻找的结果。

你为什么要这样做?

于 2012-09-19T16:21:39.430 回答
2

如果您只想在用户单击按钮时在页面上的某个位置回显来自 PHP 的消息,您可以执行以下操作:

<button type="button" id="okButton" onclick="funk()" value="okButton">Order now</button>
<div id="resultMsg"></div>
<script type="text/javascript">
function funk(){
  alert("asdasd");
  document.getElementById('resultMsg').innerHTML('<?php echo "asdasda";?>');
}
</script>

但是,假设您的脚本需要进行一些服务器端处理,例如将商品添加到购物车,您可能想查看 jQuery 的http://api.jquery.com/load/ - 使用 jQuery 加载路径进行处理的php脚本。在您的示例中,您可以执行以下操作:

<button type="button" id="okButton" onclick="funk()" value="okButton">Order now</button>
<div id="resultMsg"></div>
<script type="text/javascript">
function funk(){
  alert("asdasd");
  $('#resultMsg').load('path/to/php/script/order_item.php');
}
</script>

这将运行 php 脚本并将它返回的任何消息加载到<div id="resultMsg">.

order_item.php 会将商品添加到购物车并回显您想要显示的任何消息。要使示例正常工作,order_item.php 就足够了:

<?php
// do adding to cart stuff here
echo 'Added to cart';
?>

为此,您需要在您的页面上包含 jQuery,方法是将其添加到您的<head>标签中:

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script>
于 2012-09-19T16:36:23.707 回答
1

任何服务器端的东西,如 php 声明,都必须在脚本标签内的主机文件(扩展名为 .php 的文件)中进行评估,如下所示

<script type="text/javascript">
    var1 = "<?php echo 'Hello';?>";
</script>

然后在 .js 文件中,可以使用变量

alert(var1);

如果您尝试评估 .js 文件中的 php 声明,它将不起作用

于 2019-02-25T05:19:10.017 回答
1

我们可以通过创建表单元素并将操作作为 .php 页面在 JavaScript 中使用 php。然后我们使用 JavaScript 提交该表单。前任:

<!doctype html>
 <html>
 <head>
 <title>PHP Executed with JS</title>
  </head>
  <body>
  <form action="phpCode.php" id="phpCode">. 
  </form> <!-- This is the form-->
   <script>
        function runPhp() { 
         var php = 
document.getElementById("phpCode")
        php.submit() //submit the form 
        }
    </script>
  </body>

PHP 文件名将是 phpCode.php。在该文件中将是您的 PHP 代码。

于 2021-07-22T20:49:36.833 回答
0

如果您不想包含 jquery 库,您可以简单地执行以下操作

a) 广告 iframe,大小为 0px,因此不可见,href 为空白

b) 在你的 js 代码函数中执行这个

 window.frames['iframename'].location.replace('http://....your.php');

这将执行 php 脚本,例如,您可以进行数据库更新...

于 2013-05-03T13:13:47.160 回答
0

把你的 php 放到一个隐藏的 div 中,然后用 javascript 调用它

php部分

<div id="mybox" style="visibility:hidden;"> some php here </div>

javascript部分

var myfield = document.getElementById("mybox");
myfield.visibility = 'visible';

现在,你可以用 myfield 做任何事情......

于 2013-10-05T18:00:42.673 回答
0

可能是这样的:

    <?php 
     if($_SERVER['REQUEST_METHOD']=="POST") {
       echo 'asdasda';
     }
    ?>

    <form method="post">
    <button type="submit" id="okButton">Order now</button>
</form>
于 2012-09-19T16:26:23.563 回答
0

使用 ajax 发送请求并在成功执行时回显响应。像这样:

 $.get("site.com/ajax", function(status,data){
          alert(status);
  });

这可以通过 jquery 库来实现。

于 2021-07-22T21:40:51.453 回答