日期:2014-05-18  浏览次数:20362 次

后台写JS 失效 没提示
msg 是存储过程的返回字符串,

Page.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('" + msg + "')</script>");这么写程序没反映

以前的程序这么写没问题的啊  
现在response.Write("<script>alert('" + msg + "')</script>"); 可以弹出提示
 
我怀疑Page_load 加了cookie的原因 程序只改了这个

 protected void Page_Load(object sender, EventArgs e)
  {

  if (Request.Cookies["userid"] != null)
  {
  //Response.Write(Request.Cookies["userid"].Value);
  c = Request.Cookies["userid"].Value;
  if (c == "" || (c.Substring(0,2)!="kf" && c.Substring(0,3)!="adm"))
  {
  Page.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>document.getElementById('gettaodata').style.display='none'</script>");
  }
  }
  else
  {
  Page.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>document.getElementById('gettaodata').style.display='none'</script>");
  }
  }

不知道哪错了

------解决方案--------------------
document.getElementById('gettaodata')这个可能没有取到值
------解决方案--------------------
确保你要操作的对象在JS里是否正常获取.
------解决方案--------------------
你这样写
Page.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('" + msg + "')</script>");
msg 里面的内容不能有换行,单引号等特殊字符才可以,

正确的写法是
msg = msg.Replace("\r\n","\\r\\n").Replace("'","\\'");
Page.ClientScript.RegisterStartupScript(this.GetType(), "", "alert('" + msg + "')",true);
------解决方案--------------------
你确认您的代码执行到了Page.ClientScript.RegisterStartupScript这行
------解决方案--------------------
你的程序不行,你需要断点看执行到那个行没有,一般是你的判断条件错误导致没有执行,
你也可以查看浏览器源代码,看看源代码里面是否生成了
alert("")
这行代码
------解决方案--------------------
进来学习的。。
------解决方案--------------------
Page.ClientScript.RegisterStartupScript生成的代码不在页头。
在页头的response.write()出来的内容会破坏页面的css的。

Page.ClientScript.RegisterStartupScript生成的代码是在</form>这个结束标记的前面的