Обновите запись базы данных без обновления страницы.ASP VBscript - PullRequest
0 голосов
/ 08 января 2012

Этот запрос о помощи следует за плохо сформулированным запросом о помощи ранее (извинения).

У меня есть две страницы 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 Ответ

1 голос
/ 08 января 2012

Прежде всего, измените ваш код на использование параметров, чтобы вы были защищены от атаки 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">

Вот и все ... теперь форма будет отправлена ​​"внутри" скрытой рамки, будетвсе еще запускает обновление базы данных и не вызывает обновления.

...