asp,服务器端填充文本框

时间:2016-01-30 01:55:40

标签: asp-classic server-side

关于这方面的问题确实存在于堆栈中,但答案是错误的或没什么用处。

来自较旧的VB,并且熟悉Java(代码在客户端上运行正常),尝试填充文本框服务器端asp正在推动我的问题。微软的逻辑完全是无用的(无论主题如何)。

是的,这可能是由于我缺乏概念化,但如果文本框有id并且我可以提取数据,为什么我不能写入具有命名id的不同文本框?

我可以写到正文,为什么不是一个带有命名id的文本框?对我来说完全是无稽之谈。只是文本框有问题吗?

任何反馈,特别是对我不理解的技术解释,都会非常感激。

非常简单的代码示例:

<!DOCTYPE html>
<html><body>
  <form action="p3.asp" method="post">
    AnyVal: <input type="text" name="AnyVal" size="20" />
    Other: <input type="text" name="Other" size="20" />
    <input type="submit" value="Submit" />
  </form>

<%
  dim sRet
  sRet=Request.Form("AnyVal")

  If sRet <> "" Then
    Response.Write("Your Val is: " & sret &  "!<br>")
    Other.value=sRet
  End If
%>

</body></html>

3 个答案:

答案 0 :(得分:2)

  

是的,这可能是由于我缺乏概念化,

我同意这个说法,你根本无法做到这一点......让我解释一下这个过去几天我写的最近答案的摘录

vbscript dropdown in function without using HTML (classic ASP)

  

classic-asp几乎与Web上的所有其他预处理器语言一样   应用程序,没有教师直接与您的交互   浏览器。相反,该语言为您提供了一组写入方法   并从用户代理处接收数据(不是必需的浏览器)。

     

并且浏览器依赖于HTML,XHTML,CSS和衍生物来构建   用户的界面,并且由于预处理器没有这个事实   直接与HTML交互,这是其原因,因为你无法做到   在纯vbscript中删除HTML代码。

你想要做的是使用ASP语言将表单元素视为对象,遗憾的是你不能这样做,因为表单元素对于服务器预处理器(ASP)是不可见的。

您需要在HTML上实际编写代码,因为这样的表单元素并不存在于ASP引擎

<%
  dim sRet
  sRet=Request.Form("AnyVal")

  If sRet <> "" Then
    Response.Write("Your Val is: " & sret &  "!<br>")
  End If
%>
<!DOCTYPE html>
<html><body>
  <form action="p3.asp" method="post">
    AnyVal: <input type="text" value="<%=sRet%>" name="AnyVal" size="20" />
    Other: <input type="text" value"<%=sRet%>" name="Other" size="20" />
    <input type="submit" value="Submit" />
  </form>

</body></html>

我希望我能够清楚地解释ASP的实际运作方式

答案 1 :(得分:0)

查看您的代码我认为实现您想要的最简单方法如下。

<%
  dim sRet
  sRet=Request.Form("AnyVal")
%>



<!DOCTYPE html>
<html><body>
  <form action="p3.asp" method="post">
    AnyVal: <input type="text" name="AnyVal" size="20" />
    Other: <input type="text" name="Other" size="20" value="<%= Sret %>" />
    <input type="submit" value="Submit" />

 <%
  If sRet <> "" Then
    Response.Write("Your Val is: " & sret &  "!<br>")

  End If
%>
  </form> 


</body></html>

您的经典ASP是服务器端代码,您的表单元素是客户端,因此它们无法相互交互。

注意,您已将此标记为经典ASP。如果您的意思是ASP.net,那么您需要使用服务器端控件 - <asp:Textbox>请注意,VB和VBScript是不同的,就像Java和JavaScript不同一样

编辑 - @Rafael打败了我发布这个,并且他给出了一个或多或少相同的更详细的解释,所以你应该接受他的回答

答案 2 :(得分:-1)

感谢您的回复,但我想我已将其钉死了。

我会发布下面的代码,以防其他人发现它有用。

我有点知道asp&amp; java以不同的方式与html交互,但是让我感到兴奋的一件事就是使用javascript变量来获取服务器端变量。

例如,

  var cret;   cret =&lt;%= sret%&gt;

如果sret是一个数字就有效,但如果它是一个字符串就不行(不知道为什么,也许有人可以启发我)。

我确实想要让asp动态生成一个文本框并填充它。

但是,我真的希望客户端的javasript能够做到这一点。从实际的角度来看,我可能只是放弃了,让asp做到了,但我对整个事情变得有点兴奋。

我已经阅读了很多有关此问题的帖子,博客等。在我看来,提出的解决方案要么是复杂的,要么是没有工作。问题似乎得到了很多,所以我很惊讶地发现没有相当简单的答案。

我想做的一切都可以在javascript中完成,即使使用runat = server也是如此。但我特别希望将页面背后的一些代码保密。 afaik,这需要asp。

我怀疑这是其他人希望通过javascript来填充元素的主要原因仍然在服务器上使用asp。

以下代码使用表单帖子,其中asp可以进行一些操作并生成一个输入元素,可以通过javascript随后访问/操作。对于此示例,输入元素是隐藏的。

<!DOCTYPE html>
<html><head>
<title>asp java test</title>
</head>
<body>

  <form action="p5.asp" method="post">
    <p>Paste into the yellow box and then click Go.</p>
    Set Val: 
    <input type="text" id="setval" name="setval" size="30"
     style="background-color: #FFFFCC" />
    <input type="submit" value="Submit" /><p>

    Ret Val: 
    <input type="text" id="retval" name="retval" size="30" />
  </form>


  <!-- Server Side -->
  <%
    dim sret
    sret = Request.Form("setval")

    If sret = "" Then sret = " Nada"

//  <!-- gen output server side-->
    response.write("<input type='hidden' id='hid1' name='hid1' value='" & sret & "'/><br>")

  %>

  <!-- Client Side -->

  <script language = "JavaScript">
    var cret;

    {

//    Get the val
      cret = document.getElementById("hid1").value;

//    Populate the output box
      document.getElementById("retval").value = cret;
    }

  </script>

</body></html>

似乎可以很好地发挥它的预期用途。

加里