无需刷新页面即可更新数据库记录。 ASP VBscript

时间:2012-01-07 20:20:31

标签: ajax database asp-classic vbscript

此请求帮助之前是一个措辞不力的请求(道歉)。

我有两个asp / vbscript页面。第二页(仅包含<%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可以做到这一点,但我没有任何使用它的经验。

非常感谢

1 个答案:

答案 0 :(得分: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添加到您的<form>标记中,如下所示:

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

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

相关问题