我应该将ns_return / ns_respond添加到我的代码中吗?

时间:2013-05-19 09:27:28

标签: javascript ajax tcl

我是学习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,请添加一些解释, 提前谢谢:)

1 个答案:

答案 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通常更有用,尽管您需要稍微不同的技术来显示它。