为什么javascript不能使用我在php文件中声明的javascript变量?

为什么javascript不能使用我在php文件中声明的javascript变量?,php,javascript,variables,Php,Javascript,Variables,大家好,这件事在过去一周左右一直困扰着我,情况如下: 我有一个网站使用GoDaddy托管。本期中使用的三个文件是index.html、milktruck.js和xml_http_request.php,它们都位于同一目录中 index.html文件使用以下代码引用milktruck.js文件: <script type="text/javascript" src="milktruck.js"></script> simple从未在milktruck.js文件中初始化

大家好,这件事在过去一周左右一直困扰着我,情况如下:

我有一个网站使用GoDaddy托管。本期中使用的三个文件是index.html、milktruck.js和xml_http_request.php,它们都位于同一目录中

index.html文件使用以下代码引用milktruck.js文件:

 <script type="text/javascript" src="milktruck.js"></script> 
simple从未在milktruck.js文件中初始化。相反,我在xml_http_request.php文件中包含了以下代码行:

 echo "<script> var simple = 'string o text'; </script>";
我假设一切都会编译,因为我的游戏运行,但是placem函数无法正常运行,因为字符串“string o text”从未出现

如果在调用函数placem之前注释掉php文件initialize simple中的代码行,并包含以下代码行,则一切正常,文本显示:

 var simple = 'string o text';

你认为问题出在哪里?在尝试使用javascript文件中的简单变量之前,是否需要调用php文件?我该怎么做?或者我的代码有什么问题吗?

可能是这样初始化您的值: window.simple='blah blah blah'

然后通过窗口。简单


您可以尝试使用调试器查看发生了什么,例如FireBug

可能会初始化如下值: window.simple='blah blah blah'

然后通过窗口。简单

您可以尝试调试器来查看发生了什么,例如FireBug

隐藏在问题中的是评论。它有2200行,73kb,格式很差。它也是

正如在这里的评论和前面的问题中所指出的,您可能对PHP如何工作以及PHP如何与Javascript交互产生了根本性的误解

让我们看一下milktruck.js的第62-67行:

//experiment with php and javascript interaction

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


//var simple = "<?php echo $simpleString; ?>";
这种方法不起作用的原因是,如果不在服务器上进行一些奇怪的配置更改,PHP就不会处理扩展名为.js的文件。由于使用共享主机,您将无法做到这一点。相反,您可以使用.php扩展名重命名该文件。这将允许PHP处理该文件,并允许您输入的命令实际工作

您需要对该文件再做一次更改。在最上面,最上面,在做其他事情之前,你需要以下几行:

<?php header('Content-Type: text/javascript'); ?>
此命令将告诉浏览器返回的文件是Javascript。这是必需的,因为PHP通常输出HTML,而不是Javascript。如果脚本未标识为Javascript,某些浏览器将无法识别该脚本

现在我们已经解决了这个问题

相反,我在xml_http_request.php文件中包含了以下代码行:很久很久以前

除了整个单片代码块中的一个或两个之外,没有实际处理结果的ajax请求。这意味着不太可能处理脚本标记。此外,处理结果的一个或两个实际将其视为XML并返回一个文档。脚本标记也不太可能在那里处理

这将解释为什么变量永远不会在Javascript中可靠地显示

如果您需要从ajax调用返回可执行代码,并且这样做是可靠的,那么您需要采用一个成熟的、经过良好测试的Javascript库,如。别担心,如果您真的想,您可以混合和匹配现有代码和jQuery。如果您只想返回数据,那就是JSON的用途。你可以拥有,也可以拥有。这比你现在不幸的一团糟要快得多,容易得多,方便得多

哦,或者使用Chrome/Safari的开发工具,它们将为您节省大量Javascript痛苦

然而

我在这里会非常坦率。这是错误的代码。这是可怕的代码。它的格式很差,评论是个笑话,大约有170亿个全局变量。代码吓到我了。这让我很害怕。我会犹豫要不要用一根十英尺长的杆子去碰它

我不希望在我最坏的敌人身上维护这个代码,而现在你正试图用它做一些奇怪的事情

我衷心地鼓励您在回到这个项目之前,在一个没有这个代码库那么陈旧和迟钝的代码库上磨练您的技能。保存你的理智,趁你还可以的时候出去

隐藏在问题中的是评论。它有2200行,73kb,格式很差。它也是

正如在这里的评论和前面的问题中所指出的,您可能对PHP如何工作以及PHP如何与Javascript交互产生了根本性的误解

让我们看一下milktruck.js的第62-67行:

//experiment with php and javascript interaction

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


//var simple = "<?php echo $simpleString; ?>";
这种方法不起作用的原因是,如果不在服务器上进行一些奇怪的配置更改,PHP就不会处理扩展名为.js的文件。由于使用共享主机,您将无法执行以下操作 那个相反,您可以使用.php扩展名重命名该文件。这将允许PHP处理该文件,并允许您输入的命令实际工作

您需要对该文件再做一次更改。在最上面,最上面,在做其他事情之前,你需要以下几行:

<?php header('Content-Type: text/javascript'); ?>
此命令将告诉浏览器返回的文件是Javascript。这是必需的,因为PHP通常输出HTML,而不是Javascript。如果脚本未标识为Javascript,某些浏览器将无法识别该脚本

现在我们已经解决了这个问题

相反,我在xml_http_request.php文件中包含了以下代码行:很久很久以前

除了整个单片代码块中的一个或两个之外,没有实际处理结果的ajax请求。这意味着不太可能处理脚本标记。此外,处理结果的一个或两个实际将其视为XML并返回一个文档。脚本标记也不太可能在那里处理

这将解释为什么变量永远不会在Javascript中可靠地显示

如果您需要从ajax调用返回可执行代码,并且这样做是可靠的,那么您需要采用一个成熟的、经过良好测试的Javascript库,如。别担心,如果您真的想,您可以混合和匹配现有代码和jQuery。如果您只想返回数据,那就是JSON的用途。你可以拥有,也可以拥有。这比你现在不幸的一团糟要快得多,容易得多,方便得多

哦,或者使用Chrome/Safari的开发工具,它们将为您节省大量Javascript痛苦

然而

我在这里会非常坦率。这是错误的代码。这是可怕的代码。它的格式很差,评论是个笑话,大约有170亿个全局变量。代码吓到我了。这让我很害怕。我会犹豫要不要用一根十英尺长的杆子去碰它

我不希望在我最坏的敌人身上维护这个代码,而现在你正试图用它做一些奇怪的事情


我衷心地鼓励您在回到这个项目之前,在一个没有这个代码库那么陈旧和迟钝的代码库上磨练您的技能。保存你的理智,趁你还可以的时候出去

使用Firebug或标准Firefox错误控制台。他们会告诉你,如果你的脚本试图访问一个未声明的变量,Javascript不会编译。你只知道它不能正常运行,当它不能像你期望的那样运行,或者你处理错误时。你意识到你基本上已经问了同样的问题三次了吗?@user671891你想理解还是你只是想有人帮你修一下?@user671891我不是在说你想问问题,但是你问问题的方式。你对一些基本概念缺乏理解,但似乎你不愿意学习它们。相反,你只想找到解决眼前问题的方法。使用Firebug或标准Firefox错误控制台。他们会告诉你,如果你的脚本试图访问一个未声明的变量,Javascript不会编译。你只知道它不能正常运行,当它不能像你期望的那样运行,或者你处理错误时。你意识到你基本上已经问了同样的问题三次了吗?@user671891你想理解还是你只是想有人帮你修一下?@user671891我不是在说你想问问题,但是你问问题的方式。你对一些基本概念缺乏理解,但似乎你不愿意学习它们。相反,你只想找到解决眼前问题的方法。