2013-11-20 3 views
1

Я хотел бы выполнить этот классический ASP-код при прохождении мыши над div.Выполнение классического кода ASP на мышь над

<% 
    dim s 
    s=Request.QueryString("undercity") 
    Response.Write(s) 
    set fs=Server.CreateObject("Scripting.FileSystemObject") 
    if s<>"" then 
    set f=fs.OpenTextFile(Server.MapPath("RDS/rds.txt"),2,true) 
    f.WriteLine(s) 
    f.Close 
    Set f=Nothing 
    else 
    if (fs.FileExists(Server.MapPath("RDS/rds.txt")))=true then 
     set f=fs.OpenTextFile(Server.MapPath("RDS/rds.txt"),1) 
     Response.Write("On air: "+f.ReadAll) 
     f.Close 
     Set f=Nothing 
    end if 
    end if 
    set fs=Nothing 
%> 

Я попытался создать функцию в моем файле JS с помощью .innerHTML="<% code %>", но это не сработало.

Как это сделать?

ответ

3

Вы не можете так поступать. Ключ - событие «проходящая мышь» происходит на клиентской машине. Где ASP-код запускается на сервере. Поэтому у вас должен быть способ связать их.

Они, как представляется, работают вместе: Когда пользователь запрашивает страницу asp с браузером на своем компьютере, их браузер отправляет запрос на ваш веб-сервер, ваш веб-сервер запускает ваш asp-код, который генерирует HTML-код. Затем он отправляет HTML-код результата клиенту, клиентский браузер получает итоговый HTML-код, а затем берет его оттуда. После этого пользователь может переместить мышь, чтобы вызвать некоторый код JavaScript, но это уже давно после запуска вашего кода ASP, и это происходит на клиентском компьютере.

Для того, чтобы клиентское событие «вызывало» серверный код сервера, вам придется запускать какой-либо запрос на сервер. «Form.submit» типичный пример, где клиентский код JavaScript может вызывать функцию form.submit для отправки формы, что заставляет браузер отправлять страницу назад на сервер, а затем код сервера снова вызывается, затем он генерирует некоторые новые HTML и отправить обратно в клиентский браузер, тогда браузер клиента берет на себя все это снова и снова.

Вы можете использовать AJAX для «вызова» на сервер в любое время на своей странице. Я знаком с ASP.NET AJAX, но я не знаю, что вы можете использовать с ASP. Однако концепция одинаков, и вам нужно как-то вернуться на серверную сторону, чтобы запустить код на стороне сервера.

Надеюсь, это немного поможет.

+0

Спасибо за быстрый ответ! Ну, как предложил я использовал метод GET с AJAX: \t \t $ .ajax ({ \t \t типа: "POST", \t \t URL: "test.asp", \t \t данные: {действие: "cualquiercosa"} \t \t}) \t \t.сделано (функция (msg) { \t \t предупреждение («Данные сохранены:» + msg); \t \t}); И это почти работает! –

2

Самый быстрый способ - создать мини-форму, указывающую на ваш ASP-файл как действие, например.

<form id="myForm" action="mycode.asp?undercity=somedata"> 
    <div onmouseover="document.getElementById('myForm').submit()" > 
     Mouse over me! 
    </div> 
</form> 

Приведенный выше код определяет форму «myForm» и DIV с функцией mouseover, которая представляет форму. Вы можете добавить необходимые параметры строки запроса на страницу, указанную в действии.

Basic демо: http://jsfiddle.net/S5GFN/3/

ПРИМЕЧАНИЕ: Это действие будет перезагружать всю страницу. Если вам нужно заменить .innerHTML элемента - вам нужно будет выполнить вызов AJAX. Я рекомендую использовать jQuery's .load() метод, с помощью его вы можете сделать простой вызов в кода на стороне клиента т.д .:

$("#mouseOverDiv").mouseover(function() { 
    $("#myElement").load("mycode.asp?undercity=somedata") 
}); 

Вот пример: http://jsfiddle.net/S5GFN/5/

Смежные вопросы