我粘贴了下面的代码,该代码作为小型 ajax 应用程序的核心。以前这工作得很好,makewindows 实际上显示了一个包含 artcile_desc 结果的弹出窗口。然而,我在该函数之前似乎有一个错误,因为现在只输出实际的 php 代码。这不是我的服务器设置的问题,因为我是管理员,而且这一点没有改变。
我在 Firebug 中收到以下错误,但我不确定它们的含义。
unterminated string literal
onclick(click clientX=52, clientY=50)1GmRZ%2F...D9g%3D%3D (line 2)
[Break on this error] child1.document.write("<br />\n
1GmRZ%2F...D9g%3D%3D (line 2)
updateByQuery is not defined
onclick(click clientX=29, clientY=17)CLQWYjW1...WlQ%3D%3D (line 2)
[Break on this error] updateByQuery("Layer3", "Ed Hardy");
var xmlHttp
var layername
var url
function update(layer, url) {
var xmlHttp=GetXmlHttpObject(); //you have this defined elsewhere
if(xmlHttp==null) {
alert("Your browser is not supported?");
}
xmlHttp.onreadystatechange = function() {
if(xmlHttp.readyState==4 || xmlHttp.readyState=="complete") {
document.getElementById(layer).innerHTML=xmlHttp.responseText;
} else if (xmlHttp.readyState==1 || xmlHttp.readyState=="loading") {
document.getElementById(layer).innerHTML="loading";
}
//etc
}
xmlHttp.open("GET",url,true);
xmlHttp.send(null);
}
function updateByPk(layer, pk) {
url = "get_auction.php?cmd=GetAuctionData&pk="+pk+"&sid="+Math.random();
update(layer, url);
}
function updateByQuery(layer, query) {
url = "get_records.php?cmd=GetRecordSet&query="+query+"&sid="+Math.random();
update(layer, url);
}
function GetXmlHttpObject()
{
var xmlHttp=null;
try
{
xmlHttp=new XMLHttpRequest();
}catch (e)
{
try
{
xmlHttp =new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e) {}
}
return xmlHttp;
}
function makewindows(){
child1 = window.open ("about:blank");
child1.document.write("<?php echo htmlspecialchars(json_encode($row2['ARTICLE_DESC']), ENT_QUOTES); ?>");
child1.document.close();
}
无论我尝试什么,makewindows 函数都只是将 php 代码输出为 html 源,而不是 php 代码的结果。这以前工作得很好,我不确定我做了什么改变导致了这种行为。
我现在已经粘贴了所有代码。调用 updateByQuery 的链接会生成错误,导致 makewindows 无法正确解析..我认为。
编辑:当我使用此代码时,php 正在被解析:
function makewindows(){
child1 = window.open ("about:blank");
child1.document.write("<?php echo htmlspecialchars(json_encode($row2['ARTICLE_DESC']), ENT_QUOTES); ?>");
child1.document.close();
}
但不是上面的代码
php的结果是这样的:
child1.document.write("<br />
58<b>Notice</b>: Undefined variable: row2 in <b>C:\Programme\EasyPHP 2.0b1\www\records4\fetchlayers.js</b> on line <b>57</b><br />
59null");
这会导致错误
最佳答案
我不知道 Firebug 提示什么,但我立即看到了其他东西。
您无法从 Javascript 输出 PHP 代码并期望它运行。 Javascript在浏览器中执行,PHP代码应该在服务器上执行。基本上,您向浏览器提供了一个看起来像 PHP 代码的文本文件,但浏览器不知道如何处理它。
如果您想执行 PHP 代码,请将其放入 Web 服务器上的文件中。将浏览器窗口指向服务器上的该文件,输出将显示在窗口中。
关于php - javascript 问题 - 包括 php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/371072/