2015-04-07 156 views
1

我試圖將一個php變量傳遞給一個javascript變量(在不同的文件上)。在JavaScript變量中存儲PHP變量的值

myPHP.php

<?php 
include'myJS.php'; 
$hello="Hello"; 
echo json_encode($hello); 

myJS.php

<html> 
<head> 
    <title>Hello</title> 
    <script> 
     var data; 
     var oReq = new XMLHttpRequest(); 
     oReq.onload = function() { 
      data = this.responseText; 

      alert(data); 
     }; 
     oReq.open("get", "myPHP.php", true); 
     oReq.send(); 
    </script> 
</head> 
</html> 

我運行myPHP.php文件(而不是myJS.php)。但是,我沒有收到任何錯誤,但是,在myJS.php文件中的變量'data'中,不是隻存儲PHP變量的值,而是整個myJS.php文件被存儲。我怎樣才能避免這種情況,並只存儲變量值?

P.S.這是一個示例代碼,我將用動態數據實現這個邏輯,所以請建議我可以使用動態數據的解決方案。

+0

確保'myJS.php'不輸出任何內容。包括HTML,文本,JavaScript等 – jeroen

+0

如何檢查變量值是否存儲在JS變量中? – Awani

+0

我不確定你的意思,爲什麼包含一個js文件?你似乎並不需要它。 – jeroen

回答

3

你不需要爲靜態數據AJAX,只是生成JavaScript:

<?php 
$hello="Hello"; 
?> 

<html> 
<head> 
    <title>Hello</title> 
    <script> 
     var data = "<?php print $hello; ?>"; 
    </script> 
</head> 
</html> 

如果數據不是靜態的,並且要使用AJAX,獨立的文件:

myJS.php :

<html> 
<head> 
    <title>Hello</title> 
    <script> 
     var data; 
     var oReq = new XMLHttpRequest(); 
     oReq.onload = function() { 
      data = this.responseText; 
      alert(data); 
     }; 
     oReq.open("get", "myPHP.php?ajax=1", true); 
     oReq.send(); 
    </script> 
</head> 
</html> 

這裏是myPHP.php:

<?php 
if(!isset($_GET['ajax'])) 
{ 
    include('myJS.php'); 
} 
else 
{ 
    $hello="Hello"; 
    echo json_encode($hello); 
} 
+0

我嘗試了第二段代碼,它沒有任何區別,即我仍然可以在警報中看到整個表單,而不僅僅是變量值。 – Awani

+0

@ user2195963你做錯了什麼。您必須調用myJS.html,並從myPHP.php中刪除包含 – user4035

+0

我的要求是調用PHP文件而不是HTML文件。有沒有辦法做到這一點? – Awani