现在有一个已经做好了的ASP网站,首页是index.htm。需要我加入一个功能,在打开首页时弹出一个窗口,显示今天谁过生日,C#代码好写,但问题是首页我实在是不想改成index.aspx的,整个页面也容易串行,另外ASP那套东西还调来调去的。我的问题是:如何在一打开index.htm页面时,先运行一段代码,这段代码我写在了一个runFirst.CS文件里了。

解决方案 »

  1.   

      用ajax的方式,在html页面添加
      js脚本事件
    window.onload = function() {
       
      
        var url = "InsertAjax.aspx"
         backSubmit(url);}
    function backSubmit(url, s) {
        window.document.body.style.cursor = 'wait';
        var http;
        if (window.ActiveXObject) { // IE
            try {
                http = new ActiveXObject("Msxml2.XMLHTTP");
            }
            catch (e) {
                try {
                    http = new ActiveXObject("Microsoft.XMLHTTP");
                }
                catch (e) {            }
            }
        }
        else if (window.XMLHttpRequest) { 
            http = new XMLHttpRequest();
            if (http.overrideMimeType) {
                http.overrideMimeType('text/xml');
            }
        }
        http.open("POST", url, false);
        http.send(s);
        window.document.body.style.cursor = '';
        var responseText = http.responseText;
        if (responseText == "\\r\\nSession__Expires\\r\\n") {
        }    return responseText;
    }  新建一个InsertAjax.aspx,把须要的信息返回来就可以了。
      

  2.   

    请问怎么把需要的信息返回来?
    用session?
    还是response.write?
      

  3.   

    思路是异步调用返回谁过生日信息:
    1.javasript异步调用方法:
     
    /*
    调用异步处理代码文件ashx
    */
    function Getbirthday() {
        var xmlhttp;    
        try {        xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch (e) {        // Try to use different activex object
            try {            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch (E) {            xmlhttp = false;
            }
        }    if (xmlhttp == null || !xmlhttp) {        return false;
        }    xmlhttp.abort();    xmlhttp.open("GET", "birthday.ashx", false);    xmlhttp.setRequestHeader("No-Cache", "1");
        xmlhttp.setRequestHeader("Pragma", "no-cache");
        xmlhttp.setRequestHeader("Cache-Control", "no-cache");
        xmlhttp.setRequestHeader("Expire", "0");
        xmlhttp.setRequestHeader("Last-Modified", "Wed, 1 Jan 1997 00:00:00 GMT");
        xmlhttp.setRequestHeader("If-Modified-Since", "-1");
        xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        try {
            xmlhttp.send(null);
        }
        catch (E) {
            throw new Error(SYS_ERR_MSG);
            //alert(SYS_ERR_MSG);
            //return false;
        }    if (xmlhttp.status != 200) {        return false;
        }
        return xmlhttp.responseText;
    }2.建立Getbirthday.ashxpublic class Getbirthday: IHttpHandler, IRequiresSessionState
    {
      public void ProcessRequest(HttpContext context)
      {
          StringBuilder responseText = new StringBuilder();
          responseText.Append("今天是张三的生日");
        
          context.Response.Write("({" + responseText + "})");
          context.ApplicationInstance.CompleteRequest();
      }
    }3.调用function showmessage()
    {
       var msg= Getbirthday();
       alert(msg);
    }时间关系,只说实现大体方式,楼主要用需修改。
      

  4.   

    在html中使用ajax调用一下aspx或者ashx来获取谁过生日
    然后在html中通过js控制来显示....
    完毕
      

  5.   

    感谢你的回复,我确定完全按照你的方法进行了操作,在前台HTM文件中使用javascript调用了ashx文件,为什么运行后什么反应没有?是不是还需要注意什么地方?
      

  6.   

    我觉得我明白了,弄了一下午,脑子有点晕,我没有让javascript脚本运行起来!
      

  7.   

    这么复杂。。用JS调用后台方法不就可以了吗?
    1.后台方法:protected string CsharpVoid(string strCC)
    {  return strCC;   }     2.javascript 调用
    <script  language="javascript">   var s = "<%=CsharpVoid("www.test.com")%>";   
      document.write(s); </script> 
      

  8.   

    检查下,你的调用路径是不是正确?如果开发工具是
    Vss2008或者2010的话,建议debug下,javascript看看是不是出现什么问题了最后,谢谢给分,抱歉最近出差没上过csdn。