【问题标题】:Passing a Variable with Ajax and Javascript使用 Ajax 和 Javascript 传递变量
【发布时间】: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


【解决方案1】:

您需要传递一个 formData 对象,有关如何执行此操作的示例,请参见 the docs

let formData = new FormData();

// append some data (key, value)
formData.append("strCmd", "availability");

// send it with the form
oRequest.send(formData);

【讨论】:

  • 谢谢你。抱歉我的无知——我应该把它放在哪里?在两个函数之一中?它们之间?
  • @UnivDevGuy 在你的SendtoAjax 方法中的某处。顺便说一句,javascript 命名约定是驼峰式命名,所以它将是sendToAjax
  • 太感谢了!工作完美。感谢您抽出时间。
猜你喜欢
  • 2014-04-15
  • 2011-09-02
  • 1970-01-01
  • 2022-01-22
  • 2014-01-24
  • 2020-01-23
  • 2018-06-30
  • 1970-01-01
  • 2015-07-06
相关资源
最近更新 更多