在鼠标上执行经典ASP代码

时间:2013-11-20 21:54:06

标签: asp-classic

我希望在将鼠标移到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 
%>

我尝试使用.innerHTML="<% code %>"在我的js文件上创建一个函数,但它不起作用。

应该怎么做?

2 个答案:

答案 0 :(得分:3)

你不可能那样做。关键是客户端计算机上发生“传递鼠标”事件。 ASP代码在服务器计算机上运行的位置。所以你必须有办法将它们连接在一起。

他们似乎一起工作的方式是,当用户在他们的机器上使用浏览器请求asp页面时,他们的浏览器向您的Web服务器发送请求,您的Web服务器运行您的asp代码,该代码生成HTML代码。然后它将结果HTML代码发送到客户端,客户端浏览器接收结果HTML代码,然后从那里接管。在此用户可以移动鼠标以触发一些JavaScript代码之后,但是在您的ASP代码运行并且它在客户端计算机中发生之后很久。

为了让客户端事件“调用”服务器端代码,您必须触发某种服务器请求。 “form.submit”是客户端JavaScript代码可以调用form.submit函数来提交表单的典型示例,这会导致浏览器将页面回发到服务器,然后再次调用服务器代码,然后生成一些新的HTML并发送回客户端浏览器,然后客户端浏览器就像这样反复接管。

您可以随时在页面中使用AJAX“呼叫”回服务器。我熟悉ASP.NET AJAX,但我不知道你可以用ASP。但是这个概念是一样的,你必须以某种方式回到服务器端才能运行服务器端代码。

希望这有点帮助。

答案 1 :(得分:2)

最快的方法是创建指向ASP文件的迷你表单,例如

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

上面的代码定义了一个表单“myForm”和带有鼠标悬停功能的DIV,它提交了表单。您可以将所需的查询字符串参数添加到Action中指定的页面。

基本演示:http://jsfiddle.net/S5GFN/3/

注意:此操作将重新加载整个页面。如果需要替换元素的.innerHTML,则必须执行AJAX调用。我建议使用jQuery's .load()方法,使用它可以在客户端代码中进行简单的调用,例如:

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

以下是一个示例:http://jsfiddle.net/S5GFN/5/