小弟的程序是检查页面上的textbox的值,ok的话然后再下载文件。
检查是用javaScript写的,写在前台,取控件是这样写的
var obj;
obj = document.all("textbox1");
.......下载的程序写在后台,程序是
Response.Clear()
Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(Excel文件.Name))
Response.AddHeader("Content-Length", Excel文件.Length.ToString())
Response.ContentType = "application/octet-stream"
Response.WriteFile(Excel文件.FullName)
Response.End()但是,问题来了。
第一次下载,先执行javaScript,再下载,没问题。但是第二次javaScript报错了。就报在"obj = document.all("textbox1");"这句话上。下载还是可以的。并且,如果第一次下载时,在下载窗口按取消的话,第二次就不会报错。
所以,我认为下载的程序有可能影响了javascript。或者说是影响了前台。使之找不到textbox控件,结果出错。
我调查了很久,一直找不到解决方法。希望各位高手,鼎力相组,帮我想想办法,我在这里多谢了!!!另外,我其他取控件的javascript方法也用过了,不行。

解决方案 »

  1.   

    仅看这点代友码,看不出来,能把javascript 部分贴出来吗?
      

  2.   

    我认为下载的程序有可能影响了javascript。或者说是影响了前台。使之找不到textbox控件,结果出错。
    ------------------------
    不会的,找找别的原因!
      

  3.   

    完整javascript程序:
    <script language="javascript">

    var obj1;

    function check(){

    if ( checkScreen() != true ){
    return false;
    }

    return true;
    }function checkScreen(){ obj1 = document.all("textbox1");// 这行爆掉
     if (obj1.value.length == 0 ){
     alert("不能为空");
     return false;
     }
       return true;
    }</script >
    请大家看看,哪里有问题,谢谢大家
      

  4.   

    试试将obj1 = document.all("textbox1");// 这行爆掉
    换成
    obj1 = eval(document.all.textbox1);
      

  5.   

    我又有新发现了,我的这个页面是frame的一个子页面,写法如下:
    <frameset frameBorder="1" cols="20%,80%">
    <frame name="frmLeft" src="" noResize scrolling="no">
    <frame name="frmRight" src="test.aspx">
    </frameset>如果我个页面test.aspx不放在frame中,怎么按也不会爆,看来是frame与下载source之间的冲突,但是我不知道怎么解决。根本问题到底是什么。大家可以试试,肯定会导致javascript爆的。希望大家继续帮忙,谢谢大家!!!!!
      

  6.   

    楼上的大哥,不行啊。这跟javascript本身没问题。是下载部分与frame结构的问题。
      

  7.   

    不知道,没办法的话把判断textbox也放在后台吧....