标签可以在javascript中使用

时间:2011-04-08 12:37:09

标签: php javascript ajax jquery

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

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

8 个答案:

答案 0 :(得分:9)

如果我理解你想做什么,你会想用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\";";   
       }
     }  ?>
}

答案 1 :(得分:1)

是的,只要您在将作为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代码中生成javascript。

答案 2 :(得分:1)

实际上,您无法在JavaScript中使用PHP标记。

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

答案 3 :(得分:1)

此处发布的具体解决方案可以解决您目前的情况,我只想谈谈他们背后的原因。

Javascript逻辑在您的浏览器中执行。 PHP逻辑在服务器上执行。

直接在javascript中嵌入条件PHP语句将无法满足您的需求,但您可以使用PHP生成浏览器需要执行的javascript。

答案 4 :(得分:0)

是的,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 }?>
}

答案 5 :(得分:0)

是。但只有当页面作为实际的PHP页面执行时才会执行。

如果您通过javascript或HTML使用PHP代码我建议使用templatish语句,如下所示:

<?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 } ?>

答案 6 :(得分:0)

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

AddHandler php-cgi .js

这将使您的.js文件以php身份运行,但保留其原始扩展名。

答案 7 :(得分:0)

最简单的方法是创建一个生成动态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>标记将一些参数传递给函数或类