2015-04-07 158 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