【问题标题】:asp application button doesn't perform correctly and does not execute the server callasp 应用程序按钮无法正确执行并且不执行服务器调用
【发布时间】:2018-11-28 19:35:12
【问题描述】:

我正在开发一个经典的 asp 应用程序(我知道,不是自愿的)。 我的表单中有一个按钮,它应该根据用户输入的条件进行搜索。

为了给出一个基本结构,如下所示:

<form action="IncidentMain.asp" method="post" name="frmAdd" onSubmit="return checkform( this )">

<input TYPE="image" SRC="Include/Search.gif"  ALT="Search" VALUE="submit" id="IMAGE4" name="IMAGE2" onclick="javascript: document.frmAdd.txtaction.value = 'search';" >

</form>

点击按钮后,如action ="IncidentMain.asp" 形式所示,提交时我调用了一个函数,该函数实际上被正确调用。

function checkform ( form )
{

    if (form.txtIncidentNumber.value == "") {
        alert( "Please Enter Incident Number" );
        form.txtIncidentNumber.focus();
        return false ;
    }
    alert("IM HERE");
    return true ;
}

所以它肯定会通过这个函数,然后我有最后一段代码来实际进行搜索:

<%
        IF Request.Form("txtaction") = "search" THEN
        'IT NEVER GETS HERE
        'SeLECT DATA FROM SQL SERVER
        End if
  %>

我不明白为什么会这样。 IT 基本上看起来不想与服务器通信,它在某处停了下来。这段代码有什么原因不起作用?

编辑:

<form method="post" action="Incident.asp" name="frmuser" onsubmit="return checkform( this )">
     <input type="submit" value="Save / Submit" name="btnSubmit" 
     id="SaveButton"  >
</form>

这里的代码没有命中 checkform(this) 函数,但它会到达我的 VB 代码,它的开头是这样的:

<%
    if Request.Form("btnSubmit") ="Save / Submit" THEN 

【问题讨论】:

  • 您的提交还使用onclick 处理程序以编程方式触发了输入的更新,那么您如何保证在提交页面之前运行javascript?您发布的 HTML 结构中的 txtaction 输入在哪里?
  • 假设太多,删除IncidentMain.asp中的If,然后使用Response.Write()检查提交是否到达。
  • alert() 不会触发吗?您还应该在form 中定义您的txtIncidentNumber 文本输入字段,脚本可能在后台出错,因为它找不到form.txtIncidentNumber。检查您的网络开发工具(通常 F12 取决于浏览器)。
  • 现在不知何故工作。感谢您的帮助

标签: vbscript asp-classic


【解决方案1】:

如果您只想检查搜索是否已提交,您可以使用该方法会简单得多;

Dim is_submit: is_submit = (Len(Request.Form & "") > 0)
If is_submit Then
  'We have a POST form submission do something.
End If

甚至;

Dim request_method: request_method = LCase(Request.ServerVariables("REQUEST_METHOD") & "")
If request_method = "post" Then
  'We have a POST request (likely a form submission).
End If

存储隐藏的输入值只会使 HTML 变得混乱,并且在很多情况下是不必要的,当您还必须使用页面中的事件处理程序更新它们时,您会增加一层不必要的复杂性。

但是,要使所有这些工作,您必须有一些东西来包含搜索,最简单的表单应该看起来像这样;

<form action="IncidentMain.asp" method="post">
  <input type="text" name="txtIncidentNumber" value="" />
  <input type="image" name="IMAGE2" src="Include/Search.gif" alt="Search" value="submit" />
</form>

【讨论】:

  • 感谢您的回答。我正在为此苦苦挣扎,因为我还没有真正使用过 Classic ASP。问题是,每个表单都有这一行:
    基本上在提交按钮上,我希望它运行checkform(this) 函数在运行实际的 VB 代码之前。这就是我挣扎的地方。有时,它会进入进行验证的 checkform(this) 函数,但它从未命中 vb 代码。其他时候它会命中 vbCode 但从未命中 checkform(this) 函数
  • 您应该仍然可以使用onsubmit 处理程序,只是不需要图像输入按钮上的onclick 处理程序。
  • 你能看看我的编辑吗?谢谢你。我真的不明白为什么它不起作用。我为这个特定的表格复制了另一个表格。另一个具有相同的代码,一切正常。这个没有
【解决方案2】:

在表单中添加一个隐藏的txtaction 输入字段。

【讨论】:

    【解决方案3】:

    表单缺少隐藏字段“txtaction”。添加字段并输入 value="search"。 并删除应该这样做的javascript。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-18
      • 1970-01-01
      • 2016-12-30
      • 2018-09-28
      • 2017-11-17
      • 1970-01-01
      相关资源
      最近更新 更多