ASP.NET jQuery 食谱23 (jQuery AJAX实现调用页

系统 1633 0

这节我们来看下如何实现AJAX调用页面后台方法和web服务定义的方法,下面通过验证用户的例子,先讲解如何调用页面后台方法,具体实现步骤如下:

1.新建Recipe23.aspx页面。

2.在该页面的后台文件Recipe23.aspx.cs中添加引用

      
        using
      
       System.Web.Services;
    

3.定义静态数组和初始化数据

      
        public
      
      
        static
      
      
        string
      
      [] userNameArrray;
      

protected void Page_Load( object sender, EventArgs e)
{
userNameArrray = new string [ 5 ] { " KenLee01 " , " KenLee02 " , " KenLee03 " , " KenLee04 " , " KenLee05 " };
}

4.定义验证用户名合法性的静态方法

      
        ///
      
      
        <summary>
      
      
        
/// 验证用户是否合法
/// </summary>
/// <remarks>
/// AJAX如果要直接调用该方法,需要添加[WebMethod()],并定义为静态方法
/// </remarks>
/// <param name="sUserName"> 用户名 </param>
/// <returns> 返回结果 </returns>
[WebMethod()]
public static bool CheckUserName( string sUserName)
{
// 如果用户存在,就验证合法
if (userNameArrray.Contains(sUserName))
{
return true ;
}

return false ;
}

5.在Recipe.aspx里面实现界面结构代码如下

      
        <
      
      
        form 
      
      
        id
      
      
        ="form1"
      
      
         runat
      
      
        ="server"
      
      
        >
      
      
< div >
< asp:TextBox ID ="txtUserName" runat ="server" ></ asp:TextBox >
< asp:Button ID ="btnCheck" runat ="server" Text ="验证用户" />
</ div >
</ form >

6.在Recipe.aspx里面实现AJAX调用页面后台用户验证方法CheckUserName的脚本代码如下

      
        <
      
      
        script 
      
      
        type
      
      
        ="text/javascript"
      
      
        >
      
      
        
$(
function () {
$(
" #btnCheck " ).click( function (e) {
e.preventDefault();

// 首先判断用户名是否为空,并给出提示
if ($( " #txtUserName " ).val() == "" ) {
alert(
" 请输入用户名! " );
}
else {
sendData($(
" #txtUserName " ).val());
}
});

// 定义一个AJAX请求方法
function sendData(sUserName) {
// 访问页面后台方法
var loc = window.location.href;
$.ajax({
type:
" POST " ,
url: loc
+ " /CheckUserName " ,
// sUserName要跟请求方法CheckUserName定义的参数名称要保持一致
// json数据格式是由一对键值构成,如{"name1":"value1", "name2":"value2"}
data: ' { "sUserName": " ' + sUserName + ' "} ' ,
// 发送信息至服务器时内容编码类型
contentType: " application/json; charset=utf-8 " ,
dataType:
" json " ,
success:
function (msg) {
// AJAX响应被包装到一个d对象里,如{"d":true},
// 因此需要用到msg.d来获取请求返回的布尔值
if (msg.d) {
alert(
" 验证用户成功! " );
}
else {
alert(
" 验证用户失败! " );
}
},
error:
function (xhr, textStatus, errorThrown) {
alert(
" AJAX错误: " + errorThrown);
}
});
}
});
</ script >

7.运行程序后显示页面如下:

8.输入用户名KenLee10:

ASP.NET jQuery 食谱23 (jQuery AJAX实现调用页面后台方法和web服务定义的方法)_第1张图片

9.输入用户名KenLee01:

ASP.NET jQuery 食谱23 (jQuery AJAX实现调用页面后台方法和web服务定义的方法)_第2张图片

10.还可以通过Firebug观察AJAX请求响应的数据,请求数据如下:

ASP.NET jQuery 食谱23 (jQuery AJAX实现调用页面后台方法和web服务定义的方法)_第3张图片

11.请求响应的JSON数据:

ASP.NET jQuery 食谱23 (jQuery AJAX实现调用页面后台方法和web服务定义的方法)_第4张图片

ASP.NET jQuery 食谱23 (jQuery AJAX实现调用页面后台方法和web服务定义的方法)_第5张图片


下面再来看下AJAX如何调用Web服务:

1.创建Web服务用户验证的文件UserNameWS.asmx,必须添加[System.Web.Script.Services.ScriptService],实现用户验证代码如下:

      
        using
      
       System;
      
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;

/// <summary>
/// UserNameWS 的摘要说明
/// </summary>
[WebService(Namespace = " http://tempuri.org/ " )]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
// 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
[System.Web.Script.Services.ScriptService]
public class UserNameWS : System.Web.Services.WebService {

public UserNameWS () {

// 如果使用设计的组件,请取消注释以下行
// InitializeComponent();
}

/// <summary>
/// 验证用户是否合法
/// </summary>
/// <remarks>
/// AJAX如果要直接调用该方法,需要添加[WebMethod()],并定义为静态方法
/// </remarks>
/// <param name="sUserName"> 用户名 </param>
/// <returns> 返回结果 </returns>
[WebMethod]
public bool CheckUserName( string sUserName)
{
string [] userNameArrray = new string [ 5 ] { " KenLee01 " , " KenLee02 " , " KenLee03 " , " KenLee04 " , " KenLee05 " };
// 如果用户存在,就验证合法
if (userNameArrray.Contains(sUserName))
{
return true ;
}

return false ;
}
}

2.修改Recipe23.aspx的脚本代码sendData函数,只需修改loc访问地址:

      
        //
      
      
         定义一个AJAX请求方法
      
      
        
function sendData(sUserName) {
// 访问页面后台方法
// var loc = window.location.href;
// 访问Web服务
var loc = "UserNameWS.asmx";
........

简单完成上面两步,就可以直接调用web服务里面定义的方法了。具体显示的效果图,和上面介绍的AJAX访问页面方法的效果图是一样的,这里就不用重复写了。

ASP.NET jQuery 食谱23 (jQuery AJAX实现调用页面后台方法和web服务定义的方法)


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论