关于json和后台调用js的方法

     以下为工作中遇到的一些问题,记录下来以备后查:

     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 对象来使用。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值