2011-04-08 17 views
1

我們可以在javascript中使用<?php ?>標籤嗎?如果是,那麼我的下一個問題是;我們可以在這個標籤中使用會話嗎?例如:<?PHP ?>標籤可以在javascript中使用

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

如果頁面'.php'可以otherwi seo否 – 2011-04-08 12:38:34

+1

它並不一定是.php,擴展名無關.. – pleasedontbelong 2011-04-08 12:42:50

+0

@pleasedontbelong通過'.php'我的意思是文件必須作爲PHP腳本執行 – 2011-04-08 12:45:38

回答

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

數據是Javascript變量,這裏不是PHP變量。並且php變量被用作'$ var'。 – anubhava 2011-04-08 12:42:33

+0

是啊,我剛剛發現了這個並編輯了答案 – Ivan 2011-04-08 12:47:33

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 } ?> 
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\";"; 
     } 
    } ?> 
} 
+0

感謝您的回覆, – Ruchi 2011-04-08 12:49:54

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

值得注意的是,你不能走另一條路。在PHP代碼中不能使用JavaScript變量,因爲在用戶瀏覽器執行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"; 
    } 
} 

以這種方式,javascript是從您的PHP代碼生成的。

1

事實上,你不能在JavaScript中使用PHP標籤。

只能使用生成要麼是整個JS代碼,要麼只是使用PHP的一些數據。

1

這裏發佈的具體解決方案解決了您當前的情況,我只想談談他們背後的推理。

Javascript邏輯在您的瀏覽器中執行。 PHP邏輯在服務器上執行。

直接在JavaScript中嵌入條件PHP語句不會達到您想要的效果,但您可以使用PHP來生成您的瀏覽器需要執行的JavaScript。

0

如果你使用Apache,您可以創建在JavaScript目錄.htaccess文件,其內容如下:

AddHandler php-cgi .js 

這會讓你的.js文件作爲運行PHP,但保留其原來的擴展名。

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>

相關問題