& lt; ?PHP ?比;标签可以在javascript中使用


<?PHP ?> tag can be used in javascript

我们可以在javascript中使用<?php ?>标记吗?如果是,那么我的下一个问题是;我们可以在这个标签中使用session吗?例子:

success:function(data)
{                               
    if(data)
    {
     <?php 
      if(isset($_SESSION['UserId']))
       { ?>
            window.location.href="coll_delivery_det.php";
       }
      else
       { 
    ?>                                                     window.location.href="courier.php";  <?php   
        }
     }  ?>
}

如果我明白你想做什么,你会想用php回显你的javascript命令。

success:function(data)
{                               
    if(data)
    {
     <?php 
      if(isset($_SESSION['UserId']))
       { 
            echo "window.location.href='"coll_delivery_det.php'";";
       }
      else
       { 
            echo "window.location.href='"courier.php'";";   
       }
     }  ?>
}

是。但前提是该页面作为实际的PHP页面执行。

如果你通过javascript或HTML使用PHP代码,我建议使用模板语句,像这样:

<?php if ($someVariable) : ?>
var i = 0;
<?php else : ?>
var i = 2;
<?php endif; ?>

这样会更清楚哪些语句是关闭的。而不是下面的:

<?php if ($someVariable) { ?>
var i = 0;
<?php } else { ?>
var i = 2;
<?php } ?>

事实上,你不能在JavaScript中使用PHP标签。

你只能生成整个JS代码或只有一些数据使用PHP。

这里发布的具体解决方案针对您当前的情况,我只是想谈谈背后的原因。

Javascript逻辑在浏览器中执行。PHP逻辑在服务器端执行。

直接在javascript中嵌入条件PHP语句不会达到你想要的效果,但是你可以使用PHP生成浏览器需要执行的javascript。

是的,只要你在一个文件内这样做,将被执行为PHP,但你的代码是语法上不正确的,从我可以看到。试试这个:

success:function(data) {                               
    if(data) {
     <?php if(isset($_SESSION['UserId'])) { ?>
          window.location.href="coll_delivery_det.php";
      <?php } else { ?>
          window.location.href="courier.php";
      <?php } ?>
     }
}

值得注意的是,你不能走相反的路。Javascript变量不能在PHP代码中使用,因为当用户浏览器执行Javascript时,PHP执行周期就结束了。以这种方式传递它的唯一方法是发出一个Ajax请求。

并且PHP将只运行一次每个页面加载,所以使用你的代码,如果设置了$_SESSION['UserId'],那么用户浏览器只会看到:

success:function(data) {                               
    if(data) {
          window.location.href="coll_delivery_det.php";
     }
}

否则,如果没有设置,它将从PHP呈现为:

success:function(data) {                               
    if(data) {
          window.location.href="courier.php";
     }
}

是的,php可以生成任何东西:html, css和JavaScript。你可以在。php页面上这样写:

function() {
  <?php if($data) { ?>
    window.location.href="coll_delivery_det.php"; 
  <?php } else { ?> 
    window.location.href="courier.php"; 
  <?php } ?>
}

然而,你需要记住PHP生成JavaScript作为任何其他文本,所以你不能在PHP脚本中使用JavaScript变量。如。像这样的代码将不起作用:

function test(){
  var r=1;
  <?php if ($r==1){ ?>
     alert('r = 1');
  <?php }?>
}

如果你使用的是apache,你可以在javascript目录下创建一个.htaccess文件,内容如下:

AddHandler php-cgi .js

这将使你的.js文件作为php运行,但保留其原始扩展名

最简单的方法是创建一个生成动态javascript的页面,并包含javascript的头文件。

mysite.com/js.php

<?php header("Content-type: application/x-javascript");?>
success:function(data) {                               
    if(data) {
     <?php if(isset($_SESSION['UserId'])) { ?>
          window.location.href="coll_delivery_det.php";
      <?php } else { ?>
          window.location.href="courier.php";
      <?php } ?>
     }
}

但是你可能不想那样做…浏览器将包含的javascript文件保存在缓存中,您可能会遇到一些问题。

最好的方法是将你的js文件分开,并将一些参数传递给函数或类,使用<script>标签在你的<header>

相关文章: