FSO для копирования сохраненных файлов. Страница VBScript / ASP с использованием подпрограммы - PullRequest
1 голос
/ 06 января 2012

Я пытаюсь использовать FSO = Server.CreateObject ("Scripting.FileSystemObject") для копирования / сохранения файлов, используя утилиту ASP с именем 'csImageFile'

В настоящее время мой код FSO находится на отдельной странице .asp. Это вызывается со страницы, когда пользователь выбирает опцию (используя value = "xxx.asp ..." для вызова кодовой страницы). Это отлично работает.

Проблема заключается в том, что кодовая страница FSO response.redirects перенаправляет на вызывающую страницу, и обновление теряет данные.

Я бы хотел, чтобы onlclick опции select / вызывал код FSO, помещая код в подпрограмму на исходной вызывающей странице (следовательно, избегая обновления). Я пробовал это разными способами, но безуспешно. В настоящее время я вызываю функцию js, которая сама вызывает подпрограмму VBscript. Возможно, это не правильно, но я пробовал так много перестановок, что сейчас немного растерялся.

на странице

<option onclick="calljsSub()"...

сценарии

<script language="JavaScript">
    function calljsSub(){
    //alert("js called");
    VBFunc();
    }
</script>

<script language="VBScript">
    Sub VBFunc()
        SET FSO = Server.CreateObject("Scripting.FileSystemObject")
        If FSO.FileExists ( "path to file") Then
                Set Image = Server.CreateObject("csImageFile.Manage")
                Image.ReadFile "path to file"
                Image.WriteFile Server.MapPath("path to new file")
        end if
        Set FSO = Nothing
    End Sub

Функция VBScript, похоже, ничего не делает. Возможно, есть другой способ запуска кода без обновления ?? Любой совет приветствуется.

Буду очень признателен за любой совет, поскольку я пытался решить эту проблему еще до Рождества.

Отметить спасибо Mark

Ответы [ 2 ]

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

Проблема здесь в том, что вы путаете то, что происходит на клиенте, и то, что происходит на сервере:

click event = client
javascript code = client
VB Script = server

Вы не можете вызвать функцию на сервере с клиента - это разные машины. Вам нужно вызвать URL, то есть страницу ASP. На этой странице ASP нужно посмотреть на выполняемый запрос, захватить все параметры запроса и решить, какой код запускать, основываясь на этих параметрах - в данном случае ваш VBFunc ().

Это основная функция работы веб-страниц:

страница -> запрос -> сервер -> ответ (новая страница)

Да, вы можете запустить код без обновления, используя методы AJAX, но сначала постарайтесь, чтобы базовая работа работала правильно.

0 голосов
/ 17 января 2012

Спасибо всем, кто пытается помочь. Я разобрался с этим, вызвав страницу asp через скрытый iframe на главной странице. Приветствия.

...