JavaScript访问后台方法的几种实现方法

最近的项目中需要在客户端使用JavaScript访问后台的方法,尝试了以下几种方法:

1.在<%%>中直接书写代码段

2.通过js直接执行button的click()方法 触发后台代码

3.Ajax

     参考 http://blog.csdn.net/driftwing/archive/2008/11/26/3378061.aspx在后台代码处理页面中引入要访问的方法

4.将该方法发布为webservice 通过javascript直接调用webservice.

 

项目中需要一次性循环生成多张密码卡,而且麻烦的地方在于,前台后台需要共享相当多的属性,通过hiddenField来传递。而每张密码卡都需要首先调用后台getTopMatrix()方法返回一个字符串,客户端获得字符串后做处理并存储至EXCEL,若此过程成功则调用另一个后台方法preToFormal()更新数据库。初步尝试的时候使用了方法一,方法一的缺点比较明显,当页面加载的时候<%%>中的内容被自动解析,无法实现可控的调用。

  1. <script>
  2.   /*直接获取返回值*/
  3.   var str_matrix="<%=getTopMatrix()%>";
  4. </script>

方法二解决了可控性的问题。实现步骤如下:

    1、首先建立一个按钮,在后台将调用或处理的内容写入button_click中;
    2、在前台写一个js函数,内容为document.getElementById("btn1").click();
    3、在前台或后台调用js函数,激发click事件,等于访问后台c#函数;

具体实现代码略。

当通过click事件触发后台方法后,后台方法里面对一个HiddenField赋值.而此时前台的js代码仍在执行,需要用到这个HiddenField处理后的值。结果往往是后台没有为HiddenField赋值前台js代码已经取到这个HiddenField的值,这时候仍然是空值。而通过加计时器的方法又显得相当笨拙,且效率很低。

 

这个需求最终通过方法三Ajax解决,解决步骤:

    1、首先发起一个Ajax请求,访问后台页面中的getTopMatrix()方法获取密码字符串,为避免方法二中的问题,采用Ajax的同步方式。

    2、请求响应完毕之后,获取返回的密码字符串通过Javascript处理并存储至Excel。

    3、步骤2成功之后则发起另一个ajax请求,更新数据库相关字段。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

==To be continue==

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值