以下为工作中遇到的一些问题,记录下来以备后查:
1. 很多时候会用到json,在后台先用程序把json转换为字符串,然后在前台页面需要解析json字符串,可以用 js把json字符串转换为json对象,var jsonstrtemp = eval("(" + jsonstr + ")" );这里面 jsonstr 为字符串类型, jsonstrtemp 为json 对象,但是在运行的时候总是提示 “Microsoft JScript 编译错误 : 缺少 ']”,其中之一的错误是 jsonstr 不为字符串而为object 就会报如此错误。
2. 在c#中,想通过后台调用前台的js,有以下几种方法:
(1)、 Page.ClientScript.RegisterStartupScript(this.GetType(), "qqq", " <script >test();</script >",false);
(2)、 this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "closeFunction", "test();", true);
正常情况下,上面这两种方法都是在页面加载的时候也就是在Page_Load中调用前台的js,但是如果这一部分是通过c#中自带的ajax控件调用的后台,比如用c#自;带的ajax来进行分页,就是像这种的:
<asp:ScriptManager ID="ScriptManager1" runat="server" EnableScriptGlobalization="true">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdataPanel1" runat="server">
<ContentTemplate>
<asp:Timer ID="Timer1" runat="server" Interval="30000" ontick="Timer1_Tick"></asp:Timer>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Timer1" EventName="tick" />
</Triggers>
</asp:UpdatePanel>
如果你想在 Timer1_Tick方法里面调用前台的js,应该使用下面的方法:
(3)、 ScriptManager .RegisterStartupScript(this , this .GetType(), "kk" , "testt('" + jsonhstr + "');" , true );
上面 使用 ajax 后输出脚本的方法 , 并且带参数的 , 这是传递的是一个 jsonhstr 对象字符串 , 这是需要上面一个语句来把字符串转化为 json 对象。
ScriptManager .RegisterStartupScript(this , this .GetType(), "kk" , "testt(" + jsonhstr + ");" , true );
这是传递的不是jsonhstr 字符串了, 而是一个json 对象, 这时不需要上面一个语句来转换成json 对象, 而可以直接当成一个json 对象来使用。