用 AJax 技术实现 JavaScript 访问服务器端方法

请在安装了 Asp.Net Ajax 的环境下进行本测试。

1、新建一AJax Enabled页面,页面中添加 ScriptManager,并设置 EnablePageMethods="true"。加入 6 个 TextBox ,依次命名为:
   xtbox1,xtbox2,xtbox3,xtbox4,xtbox5,tboxJs。
2、服务器端方法 Test 标记为 static ,并添加方法属性:
    [System.Web.Services.WebMethod]
    [System.Web.Script.Services.ScriptMethod]
3、在 js 调用方法中使用 PageMethods.ServerMethodName(callBackFunction); 调用,其中 ServerMethodName 为服务器端方法名,callBackFunction 为客户端回调方法。
    使用多个参数的回调方法时,代码如下:
PageMethods.CheckLogName(logName,function (res) { callback(res,'para');});
其中:
        logName 为服务端方法的参数。
        res       为回调函数接收到的返回值
        para      为回调函数的参数,有需要时再加
        回调函数如下:
function callback(res, para)
{
    ……
}
4、在回调方法中使用取到的返回值。
5、完整的例子代码如下:
Server 端:
    protected void Page_Load(object sender, EventArgs e)
    {
        tboxJs.Enabled = false;
        // 注意下行中没有传送 xtbox4 ,则在 tboxJs 上点右键时 xtbox4 将没有值
        tboxJs.Attributes.Add("oncontextmenu", "CallServerMethod('xtbox1,xtbox2,xtbox3,xtbox5,tboxJs'); return false;");
    }

[System.Web.Services.WebMethod]
[System.Web.Script.Services.ScriptMethod]
    public static string[,] Test(string eleNameList)
    {
        Random ra = new Random();
        string[] eleNames = eleNameList.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);

        string[,] results = new string[eleNames.Length, 2];

        for (int i = 0; i < eleNames.Length; i++)
        {
            results[i, 0] = eleNames[i];
            results[i, 1] = ra.Next() + "";
        }

        return results;
}

Client 端:
    <script language="javascript" type="text/javascript">
function CallServerMethod(cList) {
    PageMethods.Test(cList, jsCallBack);
}

function jsCallBack(rtn)
{    
    for(var i = 0;i<rtn.length/2;i++)
    {
        var eleName = rtn[2 * i];
        var eleValue = rtn[2 * i + 1];
        
        document.getElementById(eleName).value=eleName + " : " + eleValue;
    }
}
</script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值