【问题标题】:Update a database record without refreshing a page. ASP VBscript更新数据库记录而不刷新页面。 ASP VB脚本
【发布时间】:2012-01-07 20:20:31
【问题描述】:

此求助请求是在之前措辞不佳的求助请求(道歉)之后提出的。

我有两个 asp/vbscript 页面。第二页(仅包含 在提交第一页的表单时调用。

第二页上的代码导致更新数据库记录,如下所示(字段由查询字符串变量填充。):

    Set MyConn=Server.CreateObject("ADODB.Connection")
        MyConn.Open "dsn=xxx;uid=xxx;password=xxx;"
        SQLString = "UPDATE dbo_tbl_printing_tempstore SET " & fieldPrefix & "has_text1 = 'YES', " & fieldPrefix & "text = '" & fieldUpdate & "' WHERE id = " & tempid & ""
        MyConn.Execute(SQLString)
        MyConn.Close
    Set MyConn = Nothing

表单提交所做的只是导致数据库更新发生 - 没有别的。

页面然后 response.redirects 回到调用页面。这会导致第一页上的刷新和大量数据丢失 - 这是我要避免的。

谁能告诉我如何在不离开然后刷新呼叫页面的情况下进行更新?有人告诉我 Ajax 可以做到这一点,但我完全没有使用它的经验。

非常感谢

【问题讨论】:

  • 是的,ajax 是你应该看看的。对 Ajax、HTML 和 HTTP 做一些研究……
  • 让我印象深刻的是,这个问题与 JavaScript 无关,不应该这样标记。
  • 首页,谢谢,我会看看,但我真的可以为这一要求提供一些帮助。我确信我最终会学习 Ajax,但这对我来说完全是新事物。 Milad Naseri,您可能是对的,但由于我不知道是否有某种 javascript/jquery 解决方案,所以在有人说之前将其放入是合适的

标签: ajax database asp-classic vbscript


【解决方案1】:

首先,更改您的代码以使用参数,这样您就可以免受 SQL 注入攻击:

Set MyConn=Server.CreateObject("ADODB.Connection")
MyConn.Open "dsn=xxx;uid=xxx;password=xxx;"
SQLString = "UPDATE dbo_tbl_printing_tempstore SET " & fieldPrefix & "has_text1 = 'YES', " & fieldPrefix & "text = ? WHERE id = ?"
Set MyCommand = Server.CreateObject("ADODB.Command")
Set MyCommand.ActiveConnection = MyConn
MyCommand.CommandType = 1
MyCommand.CommandText = SQLString
MyCommand.Parameters.Append(MyCommand.CreateParameter("@text", 200, 1, 0, fieldUpdate))
MyCommand.Parameters.Append(MyCommand.CreateParameter("@id", 3, 1, 0, tempid))
MyCommand.Execute()
MyConn.Close
Set MyCommand = Nothing
Set MyConn = Nothing

有了这个,下一步就是在第一页添加隐藏框:

<iframe id="MyFrame" name="MyFrame" style="display:none;"></iframe>

最后只需将target 添加到您的&lt;form&gt; 标签中,如下所示:

<form action="SecondPage.asp" target="MyFrame">

就是这样......现在表单将在隐藏框架“内部”提交,仍然会触发数据库更新并且不会导致任何刷新。

【讨论】:

  • 感谢您。我会试一试,让你知道我的进展情况。
  • 暗影法师你是明星!我不敢相信那是那么容易。我一直在努力学习 Ajax 等。非常感谢!
  • 干杯,有时我们需要的只是正确的方向。 :) 如果这解决了您的问题,请通过勾选左侧的 V 图标将其标记为已接受的答案,对于您的其他问题也是如此。
  • Shadow Wizard,你能告诉我如何让函数在运行之前等待数据库更新(上图)完成吗?在等待上传文件时我也必须这样做(这也称为使用您的“隐藏 iFrame”解决方案。希望这是有道理的。
  • 什么功能? ASP 还是客户端?
猜你喜欢
  • 1970-01-01
  • 2016-12-24
  • 2011-10-26
  • 1970-01-01
  • 2016-09-27
  • 2014-04-29
  • 1970-01-01
相关资源
最近更新 更多