我们可以在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>