日期:2014-05-19  浏览次数:20728 次

C#.net 2005 web开发遇到的问题,调用javascript函数的问题。如下:
我在aspx声明这样的函数。
function   SetImage(ImageObj){
if(ImageObj.src= "0.gif "){
ImageObj.src= "1.gif "
}else{
ImageObj.src= "0.gif "
}
}

在cs文件中做了一个定时事件,该事件执行如下语句:
Page.Response.Write( " <script   language=javascript> SetImage(imgObj) </script> ");

报错如下:
响应在此上下文中不可用。

------解决方案--------------------
if(ImageObj.src= "0.gif "){
->
if(ImageObj.src== "0.gif "){
------解决方案--------------------
既然用js实现了转换图片,也就直接在js中定时好了,^_^,setTimeOut ,setInterval
------解决方案--------------------
用这个
if(!Page.IsStartupScriptRegistered( "script "))
{
Page.RegisterStartupScript( "script ", " <script language=javascript> SetImage(imgObj) </script> ");
}


Page.Response.Write( " <script language=javascript> SetImage(imgObj) </script> ");是不行的,因为Page.Response.Write时,页面还是空白,没有任何元素,包括你声明的函数
------解决方案--------------------
客户端都没有更新,怎么可能会更新图片呢?

------解决方案--------------------
估计要用ajax吧。
------解决方案--------------------
做到服务器端的定时不可能有效的,BS机制的原理是:客户端浏览器申请-> 服务器端响应-> 客户端浏览器结束访问并显示.在你的定时器第X次(视客户端网速而定)触发的时候,客户端那早就结束访问了,你那所有的Response客户端都不会接收,连接早就断开了,这可不是CS程序!
------解决方案--------------------
那用ajax吧 还是把定时器写在UI上,定时向server提交请求查看是否有新消息,根据返回值不同来处理 注意不可根据服务器端变量flagstate的值