我是学习tcl和adp的新手,我的ajax代码没有从tcl文件返回结果,虽然它发送了一个请求,所以我想也许我应该添加一个响应命令,请帮我处理以下代码:
<html>
<body>
<form action="">
<input value="Get Time" type="button" onclick="showCurrentTime();" name="GetTime">
<div id="result" align="center"></div>
</form>
<script language="Javascript">
function showCurrentTime()
{
var xmlhttp;
if (window.XMLHttpRequest) {
xmlhttp=new XMLHttpRequest();
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("result").innerHTML=xmlhttp.responseText;
}
xmlhttp.open("GET","time.tcl",true);
xmlhttp.send();
}
}
</script>
</body>
请注意tcl文件正常工作以打印时间,所以如果我需要添加命令ns_return或命令ns_respond,请添加一些解释, 提前谢谢:)
答案 0 :(得分:1)
您可能会发现在Javascript中使用jQuery库更容易,因为这样可以更简洁地编写客户端代码。 (请注意,我希望将{Javascript}中使用的链接放在<head>
部分中,然后通过引用将其拉入,因为这有助于在复杂情况下进行调试。)
<html>
<head>
<script src="jquery.js"></script>
<link id="timer" href="time.tcl" />
</head>
<body>
<form action="">
<input value="Get Time" type="button" onclick="showCurrentTime();" name="GetTime">
<div id="result" align="center"></div>
</form>
<script language="Javascript">
var timerURL = $("#timer")[0].href;
function showCurrentTime() {
$.get(timerURL, function(response) {
$("#result").html(response);
});
}
</script>
</body>
接下来,您需要检查服务器响应的内容类型。如果我已经理解了您在这种情况下要做的事情,那么应该确保它是text/plain
。如果我已经阅读了ns_respond
的文档,那么您需要执行以下操作:
ns_respond -type "text/plain" -string [clock format [clock seconds]]
更一般地说,返回JSON通常更有用,尽管您需要稍微不同的技术来显示它。