我有以下 JavaScript 代码,加载时没有错误,但是更新功能实际上似乎不起作用,因为 get_Records.php 从未加载。我无法测试 get_auction.php 是否已加载,因为它是从 get_records.php 中加载的
我主要担心的问题之一是,我让 update() 接受参数 pk 和查询是错误的,因为只有其中一个会被使用。这似乎是一个糟糕的黑客,而且逻辑很差,但我不知道有更好的方法。
这是代码
var xmlHttp
var layername
var url
function update(layer, part, pk, query) {
alert ("update");
if (part=="1") {
alert ("part 1");
url = "get_auction.php?cmd=GetAuctionData&pk="+pk+"&sid="+Math.random()
} else if (part=="2") {
alert ("part 2");
url = "get_records.php?cmd=GetRecordSet&query="+query+"&sid="+Math.random()
}
xmlHttp=GetXmlHttpObject()
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"
}
};
xmlHttp.open("GET",url,true)
xmlHttp.send(null)
}
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();
}
我将警报语句放入更新函数中,但没有显示任何警报语句,表明更新函数从未被调用?
我不想,也不能使用框架,也没有权限使用 firebug,所以请不要建议这些事情。我了解它们并尽可能使用它们。
我还想知道从 makewindows() 中调用 php 是否比让 makewindows 仅接受参数更可取。每种方法有什么优点或缺点吗?
尝试调用该函数时似乎出现错误,这就是我在 PHP 中执行此操作的方式:
echo "<li><a href='#' onclick=update('Layer3','2','0','hello')'>Link 1</a></li>" .
这使得这个 html 应该没问题?"\n";
<li><a href='#' onclick='update('Layer3','2','0','hello')'>Link 1</a></li>
编辑:我采纳了 tester101 的建议并将其更改为:
echo '<li><a href="#" onclick="update(\'Layer3\',\'2\',\'0\',\'hello\')">Link 1</a></li>' . "\n";
这仍然给出一个错误。我可能最终会使用汤姆斯答案,但想知道为什么这不起作用。
最佳答案
如果您可以使用 Firefox 并重现错误,我强烈建议使用 Firebug因为它真的很容易使用和单步执行脚本、设置断点等。此外,您不必使用“警报”语句,您可以使用诸如 console.info("unexpected value x=%o", some_object); 之类的东西;
它会将一个值记录到控制台(包括第 # 行),您可以稍后检查该值,而无需中断脚本。
编辑:事实上,如果您在服务器上使用 PHP,则可以使用 FirePHP帮助在客户端进行调试。
关于php - JavaScript 不工作,没有错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/359328/