2011-04-02 69 views
0

*编辑:当我试图调试另一个问题这种特定情况下被创造了,这里是我的问题的更详细说明:Why is javascript not able to use a javascript variable I declared in a php file?为什么javascript不能识别php代码?

这里的问题:

我有中下面的PHP代码一个JavaScript文件,但它不会编译。当它传递给函数placem时,底部会使用变量simple:

<?php $simpleString = "i hope this works"; ?> 


var simple = "<?php echo $simpleString; ?>"; 

window['mod0_2']= -.0015138; 
window['mod1_2']= -.3424094; 
window['mod2_2']= .40461099; 

window['lla0_2']= 43.6124872; 
window['lla1_2']= -116.20349; 
window['lla2_2']= 821.802867; 

window['publica2'] = new modd('milktruck','publica2',modScaler,'shadowrect3',1); 

placem('p2','pp2', simple, window['lla0_2'],window['lla1_2'],window['lla2_2']); 
+3

你会得到什么错误?输出是什么样的? – 2011-04-02 23:56:27

+2

是否解析了php代码?如果将其另存为.js文件,则标准配置的Web服务器可能无法解析它。 – Eliasdx 2011-04-02 23:57:21

+0

您是在浏览器上执行JavaScript代码,还是在像[v8](http://code.google.com/p/v8/)或[node.js](http://nodejs.org/)这样的工具中执行JavaScript代码。 )在你的服务器上?你知道没有主流浏览器带有PHP解释器,对吧? – sarnold 2011-04-02 23:57:58

回答

2

典型的情况是将HTML,JavaScript和PHP(或其他服务器保持扩展名为.js端编程语言/技术)托管在服务器上。然后您将使用另一台机器的网络浏览器访问该网站。再次,这是典型的情况。所有这些组件都可以存在于同一台机器上。

在开源世界中,最流行的Web服务器称为Apache。 Apache有一个模块(称为mod_php),用于解释PHP代码,执行它并返回其输出。 (对于其他编程语言,模块确实存在,但我不会去了解它。)

有两种基本方法可以完成你想要完成的任务,都有其优点和缺点。

1)配置mod_php来解释* .js文件,就好像它们是PHP文件一样。

2)将您的JavaScript文件创建为PHP文件。这与从PHP文件提供HTML的方式相同。 PHP代码可以在同一个文件中与HTML混合。标签<?php ... ?>指定应该由mod_php解释的PHP代码。其他一切只是作为输出发送到浏览器。

这是一个非常简单的HTML页面的一个很简单的例子,用PHP用于提供<title>标签的内容:这将出现在服务器上的PHP文件

<html> 
<head> 
<title> 
<?php echo 'Hello world'; ?> 
</title> 
</head> 
<body> 
</body> 
</html> 

。在浏览器中,生成的HTML源代码如下所示。 (也就是说,如果你做了页面上的“查看源文件”页面本身会出现空白,标题栏将包含词:你好,世界)

<html> 
<head> 
<title> 
Hello world 
</title> 
</head> 
<body> 
</body> 
</html> 

这也可以用JavaScript实现,而不是的HTML。要记住的重要一点是这个文件有两个视图。其中之一是您在查看原始文件时看到的内容。另一个是在执行PHP并将输出返回给浏览器之后该文件的外观。你基本上做的是将PHP的输出与HTML/JavaScript结合起来,形成发送给浏览器显示的最终输出。

+0

关于此问题的一个注意事项:根据您提出的另一个问题,我看到您正在使用GoDaddy帐户。我非常肯定,这意味着您无法配置Apache来将JavaScript源文件解释为PHP。 – 2011-04-03 00:44:43

7

您是否在.js文件中使用PHP?如果是这样,Javascript运行在PHP运行在服务器上的客户端。如果您想要以Javascript文件执行PHP,则必须将该文件重命名为.php,并将该新PHP文件包含到您的HTML中。

+0

将php文件包含到html中意味着什么?哪个文件重命名为.php,javascript文件?那么我会将milktruck.js重命名为milktruck.php并删除旧的milktruck.js? – user671891 2011-04-03 00:03:47

+0

@ user671891:如果您需要PHP代码在'.js'中解释文件,然后你需要配置你的web服务器在将它们提供给客户端之前通过PHP解释器运行'.js'文件,或者将'.js'文件重命名为'.php'文件。前者是更复杂的是,后者支持的直观性较差 – David 2011-04-03 00:06:24

+0

是的,如果你想在.js文件中执行PHP,那么把这个milktruck.js重命名为milktruck.php,比包含 2011-04-03 00:07:52

1

milktruck.php

<?php 
$simpleString = "i hope this works"; 

echo 'var simple = "'.$simpleString.'"; 

window[\'mod0_2\']= -.0015138; 
window[\'mod1_2\']= -.3424094; 
window[\'mod2_2\']= .40461099; 

window[\'lla0_2\']= 43.6124872; 
window[\'lla1_2\']= -116.20349; 
window[\'lla2_2\']= 821.802867; 

window[\'publica2\'] = new modd(\'milktruck\',\'publica2\',modScaler,\'shadowrect3\',1); 

placem(\'p2\',\'pp2\', simple, window[\'lla0_2\'],window[\'lla1_2\'],window[\'lla2_2\']);'; 

?> 


<script src="milktruck.php"></script> 

你可以利用的htaccess的和有一些modrewrites

+0

为什么你只是不会在做一个长长的文本块之前就用''>''来摆脱PHP模式呢?这将节省你必须逃避每一个单引号。仅仅因为你可以用PHP打印/回声输出文本并不意味着你应该。如果你立即在PHP中做这样的事情,至少应该使用HEREDOC。 – 2011-04-03 02:17:37

+0

这是一个示例... – 2011-04-03 02:26:23