Fork me on GitHub

一个Ajax的例子

 

一个Ajax的例子

总述

最近公司有个项目,是用B/S结构实现呼叫中心,因为以前有C/S结构的程序,所以只能在后来开发的程序去套接原来的程序。坐席板卡厂家提供了一个OCX,意思用<Object>OCX引入到网页中进通与后台CTI通讯,我这里的工作就是跟据它返回的事件来写数据库。看起来似乎没有什么技术上障碍了,但来后的实验中发现了一个大问题。在网页中调用OCX的方法全用的是脚本语言(我用的是JavaScript),但在ASP.NET中,提交数据库的搞作是要刷新页面的。这样,当坐席人员签到后,再向数据库服务器端提交数据时,页面刷新,由于脚本在页面刷新后,所有的脚本代码要重新加载一遍,这样,坐席就回到了没签到状态。这样,就有了个冲突,坐席状态不想页面刷新,写数据库要页面刷。

怎么办,幸好,“山西DotNet俱乐部”QQ群的“天赐神兵”说用Ajax。说是这个可以满足我的需求。于是就看看了,把所得结果共享给大家。

本例是引用了Ajax.net的一个dll做的。首先在vs2005的项目中引用一个AjaxPro.2.dll运行库。

1、   aspx页面代码

<html xmlns="http://www.w3.org/1999/xhtml" >

<head runat="server">

    <title>无标题页</title>

    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">

    <script language="javascript" src="log.js">

    </script>

</head>

<body>

<object id= "xx" classid="clsid:CF850467-2EFA-490D-8702-59905FBA32CB" name="ss" >

</object>

 <form name="form1" runat="server" id="Form1" >

 <input onClick="WriData();" class="border" type="button" value="写数据库" name="sub"> 

 </form>

</body>

</html>

在这里,只需调用JS里的一个文件就可以了。其中<object>部份是用来引于ocx的,它的方法写入JS文件中,这里它的方法就不写了。

 

2、   JS页面代码

function add(bz)

 test.WriData(bz,show);

}

function show(val)

  Alert(val.value);

}

其中testcs文件中的类名,WriDatacs文件中的函数,bz为参数。Show()方法主要是提示。

 

3、   cs文件代码

using System;

using System.Data;

using System.Data.SqlClient;

using System.Configuration;

using System.Collections;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

 

public partial class log : System.Web.UI.Page

{

    protected void Page_Load(object sender, EventArgs e)

    {

        AjaxPro.Utility.RegisterTypeForAjax(typeof(log));

}

    [AjaxPro.AjaxMethod]

    public string WriData(int bz)

    {

        string conn = "server=.;database=DataBaseName;uid=sa;pwd=123456";

        SqlConnection con = new SqlConnection(conn);

        con.Open();

        SqlCommand com = new SqlCommand();

        com.Connection = con;

        com.CommandText = "update zxdab set zbbz='" + bz + "',listen='" + bz + "'";

        com.ExecuteNonQuery();

        return "写数据库成功" ;

   

}

其中      AjaxPro.Utility.RegisterTypeForAjax(typeof(test));是用来注册cs代码中的test类的。每个自定议方法前必需加[AjaxPro.AjaxMethod]WriData()方法是用来写数据库的。

 

4、   Webconfig文件的修改

<system.web>下加入

    <httpHandlers>

      <add verb="POST,GET" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro.2"/>

 </httpHandlers>

这里是用来注册httpHandlers的。

好了,收工,这样一个不

posted @ 2006-05-31 15:08  桂素伟  阅读(2973)  评论(5编辑  收藏  举报