您的位置:首页 > Web前端 > JavaScript

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

2008-12-02 11:30 344 查看
最近的项目中需要在客户端使用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()更新数据库。初步尝试的时候使用了方法一,方法一的缺点比较明显,当页面加载的时候<%%>中的内容被自动解析,无法实现可控的调用。

<script>

/*直接获取返回值*/

var str_matrix="<%=getTopMatrix()%>";

</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==
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: