【发布时间】:2008-12-11 13:24:44
【问题描述】:
我有以下 javascript 代码,加载时不会出错,但更新功能实际上似乎不起作用,因为从未加载 get_Records.php。我无法测试是否加载了 get_auction.php,因为它是从 get_records.php 中加载的
我主要担心的一个问题是我做错了让 update() 获取参数 pk 和查询,因为只有其中一个会被使用。这似乎是一个糟糕的 hack 和糟糕的逻辑,但我不知道有更好的方法。
这里是代码
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();
}
我在更新函数里放了alert语句,没有显示,说明更新函数从来没有被调用过?
我不想,也不能使用框架,也无法使用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";
这仍然给出错误。我可能最终会使用 toms 答案,但想知道为什么这不起作用。
【问题讨论】:
-
alert() 需要在 update() 函数的大括号内
-
对不起,它在我的机器上,我编辑了这篇文章,没有重新粘贴。它肯定在大括号中并且没有被调用。
-
一个模糊的风格指针:你应该真的养成在行尾使用分号的习惯。现在一切正常,但是当您想要打包 JS(用于较小的下载)时,它会严重损坏。
-
好的,我只是认为没有必要。变量声明和方法调用是否应该以分号结尾?
-
你可以在一个语句中做多个变量声明。变量 x = 1,y = 2,z = 3;如果愿意,您甚至可以添加换行符以使其更易于阅读。
标签: php javascript ajax