【发布时间】:2023-01-24 08:29:59
【问题描述】:
我拥有高级 ASP(经典)技能,但对 JavaScript 和 Ajax 还很陌生。我正在开发一个允许用户输入 cmets 以响应帖子的页面。我想要表单提交字段将读者 cmet 提交到数据库,然后在不更改页面的情况下显示这些 cmet。很像 Facebook 评论。因此 Ajax 和 JavaScript。
我的 test.asp 页面(如下)正在运行。它调用 AJAX.asp 页面,写入数据库,并使用提交的文本更新页面中的 a。我唯一的问题是我将需要更新包含多个部分的页面,因此我需要将一个变量放入第二个 JavaScript 函数中以允许我写入一个唯一的 .目前它被设置为 id="newcomment" 但这将需要更改为类似 id="newcomment" & var 的内容,以便结果为“newcomment1484”(或另一个唯一编号)并且右侧得到更新。
对于我的一生,我无法弄清楚如何在第二个函数中获取变量。非常感谢任何帮助。请记住我对 JS 很陌生。
<html>
<head>
</head>
<script>
function SendtoAjax(ident)
{
if(window.XMLHttpRequest)
{
oRequest = new XMLHttpRequest();
}
else if(window.ActiveXObject)
{
oRequest = new ActiveXObject("Microsoft.XMLHTTP");
}
oRequest.open("POST", "AJAX.asp", true);
oRequest.onreadystatechange = UpdateComment;
val=document.getElementById('commentfield').value.replace(/\n/g, "<br>");
oRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
oRequest.send("strCmd=availability&commentaid=" + ident + "&commentfield=" + encodeURIComponent(val));
}
function UpdateComment(ident)
{
if(oRequest.readyState == 4)
{
if(oRequest.status == 200)
{
document.getElementById("newcomment").innerHTML = oRequest.responseText;
}
else
{
document.getElementById("newcomment").innerHTML = "Asychronous Error";
}
}
}
</script>
<body>
<form method="post" action="javascript:void(0);" name="form1">
<textarea name="commentfield" id="commentfield"></textarea>
<input id="commentaid" type="hidden" value="Available1434">
<input id="submitcomment" type="button" value="submit" onClick="SendtoAjax(1434);">
<br><br><div id="newcomment"></div>
</form>
</body>
</html>
我尝试了所有在其中获取变量的方式,但后来了解到(我认为?)“onreadystatechange”和 Ajax 存在一些问题。此刻远远超出了我。
【问题讨论】:
-
对我们俩来说,阅读完全没有缩进的代码真的很难。
-
您可以通过丢失调用 ActiveX 的 if...else 语句来简化您的代码。
oRequest = new XMLHttpRequest();应该是你现在所需要的,除非你需要支持 IE8 及以下版本。
标签: javascript ajax asp-classic