javascript函数行为不正常

时间:2008-12-15 12:18:56

标签: php javascript easyphp

我有这个小功能

function makewindows(){
child1 = window.open ("about:blank");
child1.document.write("<?php echo htmlspecialchars(json_encode($row2['ARTICLE_DESC']), ENT_QUOTES); ?>");
child1.document.close(); 
}

无论我尝试什么,只需输出php代码作为html源代码,而不是php代码的结果。这之前工作正常,我不确定我改变了什么导致了这种行为。

我现在粘贴了所有代码。调用updateByQuery的链接会生成错误,从而阻止正确解析makewindows ..我想。我不确定updateByQuery有什么问题:

function updateByQuery(layer, query) {
   url = "get_records.php?cmd=GetRecordSet&query="+query+"&sid="+Math.random();
   update(layer, url);
}

5 个答案:

答案 0 :(得分:3)

您最近是否已将此文件移出PHP解析文件(即.phtml / .php)并转移到.js文件中?请注意,您希望执行的任何PHP必须在交付给客户端之前由PHP解析器解析。如果它最初是在.php文件中,那么它将被解析/执行,并且工作正常。

但是,默认情况下,.js文件不是由PHP解析的。也许他们曾经,但是你的服务器管理员最近升级了一些东西,并且失去了这种行为?您可以使用本地配置文件(在Apache,.htaccess中)重新启用它。

答案 1 :(得分:1)

此代码必须位于PHP发送到浏览器之前由PHP解析的文件中。确保它具有“.php”扩展名(或Apache /(或其他)配置为通过PHP放置它使用的任何扩展名)。另外,请确保PHP已正确安装并正常工作。

答案 2 :(得分:0)

确保您正在使用网络服务器运行该页面,例如:http://localhost/yourpage.php,而不是直接来自文件本身,例如:file://yourpage.php

答案 3 :(得分:0)

我假设你仍然把它放在PHP解析的文件中,就像其他人已经说过的那样。然后它可能是这个代码片段之上的东西混淆了php-parser,因此它无法识别php-tag。

要测试它,尝试在此函数之前输出其他内容,可能只是注释或其他内容。

另外,在client1之前使用“var”,否则client1将在全局范围内。

更新1 既然你试图插入一段php代码并且它崩溃了,那么问题是服务器没有按原样解析文件。

要测试服务器是否真的解析了.js文件(它不是我认为的默认设置),请创建一个新文件: test.js

<?php echo "This is a test"; ?>

在浏览器中打开 test.js 文件,然后查看页面来源。如果它有php标签,你的服务器不会解析.js文件。

更新2 如果php在.js文件中工作,请尝试重写这样的函数(抱歉,我没有测试过,因为我现在无法访问php服务器)

<?php    
echo "function makewindows(){var child1 = window.open (\"about:blank\"); " .
"child1.document.write(\"" . htmlspecialchars(json_encode($row2['ARTICLE_DESC']), ENT_QUOTES) . "\");" . "child1.document.close(); }";    
?>

答案 4 :(得分:0)

我不确定这是否会有所帮助,但是最佳实践要求无论何时使用JavaScript写入新窗口,都应该打开并关闭文档。你能试试吗?

function makewindows(){
  var child1 = window.open ("about:blank");
  child1.document.open();
  child1.document.write("<?php echo htmlspecialchars(json_encode($row2['ARTICLE_DESC']), ENT_QUOTES); ?>");
  child1.document.close(); 
}