【问题标题】:How to trigger php code, in Javascript if condition如果条件,如何在 Javascript 中触发 php 代码
【发布时间】:2012-09-16 00:46:23
【问题描述】:

好的,所以我要做的是触发 PHP 代码,只有当 if 条件为真(在 javascript 中)时,我才知道 php 是服务器端,而 javascript 是客户端。 php 代码的包含工作完美,除了 1 件事,它实际上是在页面加载时触发的,而不是在 if 条件发生时触发。如果您能帮助我如何做到这一点,我们将不胜感激。我希望仅当 if 条件为真时才包含 php 文件

提前致谢

这是我正在使用的代码:

<html>
    <script src="//cdnjs.cloudflare.com/ajax/libs/visibility.js/0.5/visibility.min.js"></script>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js" type="text/javascript"></script>
<script>
var seconds=20;
var flag=false;


$(document).ready(function(){
if (!flag)
Visibility.every(1000, tick);



function tick()
{
      display();

        if (seconds>0)
        {
         seconds--;
        }
        else
        {
          if (!flag){
          document.getElementById('more').innerHTML +="<?php include_once('Code.php'); 
          ?>";
          document.getElementById('more').style.visibility='visible';
          flag=true;
          }
        }
}
function display()
{
   $("#timer").html(seconds);
}
});
</script>
<div id="TrafficHeader" style="height:100px; background-color:grey; padding:20px;">
<div id="timer"></div>
<div id="more" style="visibility: hidden;"><a href="http://www.double-it.com/Traffic/index.php">View Next Ad</a></div></div>
<iframe id="myframe" src="<?php echo ''.$URL;?>" height="100%" width="100%" frameborder="0">
</iframe>
</body>
</html>

【问题讨论】:

  • 如果您了解 PHP 在服务器端执行而 Javascript 在客户端执行,那么您就会知道 Javascript 条件 不能 影响 PHP 是否以您的方式执行显示如上。使用AJAX

标签: php javascript html include


【解决方案1】:

这是不可能的,至少不是你的做法。
原因是if 条件在服务器完成评估您的php 脚本很久之后才在客户端计算机上评估。

第一个服务器必须完成对你的 php 脚本的处理,然后想象它必须打包它,然后将整个包发送到客户端,然后将它解包并呈现 html 并评估 html 中的 javascript,或者请求外部文件比如图片、css或其他脚本文件。

如果您尝试包含一些额外的 javascript,则可以以编程方式在头部添加额外的 script 标记。如果你想在服务器上做点什么,你可以在服务器上调用一个脚本,同样简单。

只有当 if 为真时,您才能从 javascript 执行该脚本:

...
if (!flag){
    xmlHttp = new XMLHttpRequest();
    xmlHttp.open( "GET", "http://link/to/your/code.php?and=special&parameters=sent", false );
    xmlHttp.send( null );

    document.getElementById('more').innerHTML += xmlHttp.responseText;
    document.getElementById('more').style.visibility='visible';
    flag=true;
    }
...

【讨论】:

  • 我明白了,现在我完全明白了。那么我应该使用什么方法?我对 Javascript 很陌生。
  • 嗯,这取决于你想做什么,解释你的目标,我会尽力帮助你。告诉我们code.php中有什么
  • 好吧,里面有什么重要吗?因为最终我想执行 php 代码。但我想要的是仅当上面代码中的条件为真时如何触发此 php 代码。 php 代码中的内容只是连接到数据库,更新一些值(并在必要时删除)。
  • 在生成站点的同时运行 code.php 和稍后调用它之间存在差异(请参阅我的帖子编辑)。如果您稍后从 js 请求它,则 code.php 将无法访问您在渲染页面时设置和使用的变量。因此,例如,您将不得不再次连接到数据库。
  • 好的,我想我得到了我需要的一切,现在将修改我的代码:),我猜没有必要使用任何“Ajax”库之类的。
【解决方案2】:

php 代码是服务器端的,因此它在 javascript 之前执行,因此 javascript 无法控制 php 的功能。你需要使用Ajax脚本让javascript可以从服务器请求一个php文件,然后它就会工作。

【讨论】:

  • 好的,我是 javascript 新手,不知道 Ajax 做什么或如何使用它,但非常感谢您的帮助,我会做功课
  • 你能告诉我如何使用 Ajax 吗? ,比如我需要根据您的建议执行什么功能,将缩小我的搜索范围
  • 你应该绝对使用 Jquery lib,我会让你的工作更轻松。然后只需搜索 jquery ajax
【解决方案3】:

你不能那样做......你自己说过,PHP是服务器端的。为了运行 PHP,您必须让浏览器针对您的 Web 服务器查询某些内容。这绝对不会像您预期的那样工作......它将始终包含在内:

innerHTML +="<?php include_once('../../Includez/Traffic/Traffic_Code.php'); ?>";

但是,您可以让 JavaScript 从服务器获取更多内容,该服务器可以运行一些 PHP 代码并向您的页面返回新内容...

【讨论】:

    【解决方案4】:

    您是否尝试过使用“加载”的解决方案?

    <div id="special_block"></div>
    
    <script>
    
       var a = 1;
    
       if (a == 1){
         $('#special_block').load('code.php');
       }
    
    </script>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-02
      • 1970-01-01
      • 2015-07-28
      • 2022-01-17
      • 2012-07-20
      • 2016-05-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多