jQuery ajax调用webservice注意事项

 更新时间:2017年10月08日 14:17:41   投稿:lijiao  
这篇文章主要为大家详细介绍了jQuery ajax调用webservice的注意事项,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

jquery ajax调用webservice(C#)要注意的几个事项:

1、web.config里需要配置2个地方

<httpHandlers>
   <remove verb="*" path="*.asmx"/>
   <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
  </httpHandlers>

在<system.web></system.web>之间加入

<webServices>
   <protocols>
    <add name="HttpPost" />
    <add name="HttpGet" />
   </protocols>
  </webServices>

2.正确地编写webserivce的代码

/// <summary>
  /// UserValidate 的摘要说明
  /// </summary>
  [WebService(Namespace = "http://tempuri.org/")]
  [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
  [System.ComponentModel.ToolboxItem(false)]
  // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
   [System.Web.Script.Services.ScriptService]
  public class UserValidate : System.Web.Services.WebService
  {
    DFHon.Content.Common.rootPublic rp = new DFHon.Content.Common.rootPublic();
    [WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public string ValidateUserLogState()
    {
      string result = "";
      HttpCookie cookie = HttpContext.Current.Request.Cookies["DHFonMenberInfo"];
      if (cookie != null)
      {
        string username = System.Web.HttpUtility.UrlDecode(cookie["MenberName"]);
        int ipoint = 0;
        int gpoint = 0;
        try
        {
          DataTable dt = UserBll.ExecuteUserAllInfo(username);

          if (dt.Rows.Count > 0)
          {
            ipoint = int.Parse(dt.Rows[0]["iPoint"].ToString());
            gpoint = int.Parse(dt.Rows[0]["gPoint"].ToString());
          }
        }
        catch
        { }
        result = "{'user':{'id':'" + cookie["UserId"] + "','name':'" + username + "','message':'" + rp.getUserMsg(DFHon.Global.CurrentCookie.UserName) + "','ipoint':'" + ipoint.ToString() + "','gpoint':'" + gpoint.ToString() + "'}}";
      }
      else
      {
        result = "{'user':{'id':'0','name':'','message':'0','ipoint':'0','gpoint':'0'}}";
      }
      return result;
    }

    [WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public string UserLogin(string userName, string userPwd)
    {
      string returnVal = "";
      try
      {
        GlobalUserInfo info;
        DFHon.Content.UserLogin _UserLogin = new DFHon.Content.UserLogin();
        EnumLoginState state = _UserLogin.PersonLogin(HttpUtility.UrlDecode(userName), userPwd, out info);
        if (state == EnumLoginState.Succeed)
        {
          DFHon.Global.CurrentCookie.Set(info);
          DFHon.API.PDO.DiscuzNT.PassportLogin.UserLogin(Server.UrlDecode(userName), userPwd, -1);
          int ipoint = 0;
          int gpoint = 0;
          DataTable dt = UserBll.ExecuteUserAllInfo(userName);

          if (dt.Rows.Count > 0)
          {
            ipoint = int.Parse(dt.Rows[0]["iPoint"].ToString());
            gpoint = int.Parse(dt.Rows[0]["gPoint"].ToString());
          }
          returnVal = "{'user':{'id':'" + info.UserId.ToString() + "','name':'" + info.UserName + "','message':'" + rp.getUserMsg(userName) + "','ipoint':'" + ipoint.ToString() + "','gpoint':'" + gpoint.ToString() + "'}}";
        }
        else
        {
          int ids = 0;//状态:-2用户被锁定 -1用户名密码错误
          switch (state)
          {
            case EnumLoginState.Err_Locked:
              ids = -2;
              break;
            case EnumLoginState.Err_UserNameOrPwdError:
              ids = -1;
              break;
            default:
              break;
          }
          returnVal = "{'user':{'id':'" + ids + "','name':'','message':'0','ipoint':'0','gpoint':'0'}}";
        }
      }
      catch
      {
        returnVal = "{'user':{'id':'0','name':'','message':'0','ipoint':'0','gpoint':'0'}}";
      }
      return returnVal;
    }
    [WebMethod]
    public string UserLogout()
    {
      if (HttpContext.Current.Request.Cookies["DHFonMenberInfo"] != null)
      {
        HttpCookie cookie = new HttpCookie("DHFonMenberInfo");
        cookie.Expires = System.DateTime.Now.AddDays(-1);
        cookie.Domain = DFHon.Config.BaseConfig.getV("weblogin");
        HttpContext.Current.Response.AppendCookie(cookie);
      }
      return "1";
    }
    DFHon.Content.user UserBll = new DFHon.Content.user();
    [WebMethod]
    public string ValidateUserEmail(string email)
    {
      string result = "0";//返回的结果 -2邮箱为空 -1邮箱格式不正确 0邮箱存在 1填写正确
      if (string.IsNullOrEmpty(email))
      {
        result = "-2";//邮箱为空
      }
      else if (!IsValidEmail(email))
      {
        result = "-1";//邮箱格式不正确
      }
      else if (UserBll.sel_useremail(email) > 0)
      {
        result = "0";//邮箱存在
      }
      else
      {
        result = "1";//可以注册
      }
      return result;
    }

    [WebMethod]
    public string ValidateUserName(string username)
    {
      string result = "0";//返回值:-1用户名长度为2-16;0用户名存在;1可以注册
      if (username == "" || username == null || username.Length < 2 || username.Length > 16)
      {
        result = "-1";
      }
      else if (UserBll.sel_username(username) != 0)
      {
        result = "0";
      }
      else
      {
        result = "1";
      }
      return result;
    }

    public bool IsValidEmail(string strIn)
    { // Return true if strIn is in valid e-mail format. 
      return System.Text.RegularExpressions.Regex.IsMatch(strIn, @"^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$");
    }
  }

WebService

<script>
    $(function() {
      $("#userloging").show();
      //登录框处理开始
      //加载登录状态
      $.ajax({
        type: "POST", //访问WebService使用Post方式请求
        contentType: "application/json;charset=utf-8", //WebService 会返回Json类型
        url: "/API/Service/UserValidate.asmx/ValidateUserLogState", //调用WebService
        data: "{}", //Email参数
        dataType: 'json',
        beforeSend: function(x) { x.setRequestHeader("Content-Type", "application/json; charset=utf-8"); },
        error: function(x, e) { },
        success: function(response) { //回调函数,result,返回值
          $("#userloging").hide();
          var json = eval('(' + response.d + ')');
          var userid = json.user.id;
          if (userid > 0) {
            $("#spanusername").html(json.user.name);
            $("#spanmessagenum").html(json.user.message);
            $("#userloginsucced").show();
            $("#userloginbox").hide();
          }
        }
      });
      //登录
      $("#userlogbutton").click(function() {
        
        var username = $("#username").val();
        var userpwd = $("#userpassword").val();
        if (username != "" && userpwd != "") {
          $("#userloging").show();
          $.ajax({
            type: "POST", //访问WebService使用Post方式请求
            contentType: "application/json;charset=utf-8", //WebService 会返回Json类型
            url: "/API/Service/UserValidate.asmx/UserLogin", //调用WebService
            data: "{userName:'" + username + "',userPwd:'" + userpwd + "'}", //Email参数
            dataType: 'json',
            beforeSend: function(x) { x.setRequestHeader("Content-Type", "application/json; charset=utf-8"); },
            error: function(x, e) {
            },
            success: function(result) { //回调函数,result,返回值
              $("#userloging").hide();
              var json = eval('(' + result.d + ')');
              var userid = json.user.id;
              if (userid > 0) {
                $("#spanusername").html(json.user.name);
                $("#spanmessagenum").html(json.user.message);
                $("#userloginsucced").show();
                $("#userloginbox").hide();
              }
              else {
                switch (userid) {
                  case -2:
                    alert("用户被锁定!请30分钟后再登录!");
                    $("#username").focus();
                    break;
                  case -1:
                    alert("用户名或密码错误!请核对您的用户名和密码!");
                    $("#userpassword").focus();
                    break;
                  default:
                    alert("登录失败!请核对您的用户名和密码之后重试!");
                    $("#userpassword").focus();
                    break;
                }
              }
            }
          });
        }
        else if (username == "") {
          alert("用户名不能为空!");
          $("#username").focus();
        }
        else if (userpwd == "") {
          alert("密码不能为空!");
          $("#userpassword").focus();
        }
      });
      //退出
      $("#logout").click(function() {
        $("#userloging").show();
        $.ajax({
          type: "POST", //访问WebService使用Post方式请求
          contentType: "application/json;utf-8", //WebService 会返回Json类型
          url: "/API/Service/UserValidate.asmx/UserLogout", //调用WebService
          data: "{}", //Email参数
          dataType: 'json',
          beforeSend: function(x) { x.setRequestHeader("Content-Type", "application/json; charset=utf-8"); },
          success: function(result) { //回调函数,result,返回值
            $("#userloging").hide();
            if (result.d > 0) {
              $("#userloginsucced").hide();
              $("#userloginbox").show();
            }
          }
        });

      }); //登录框处理结束

    });
    </script>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 用JQuery 判断某个属性是否存在hasAttr的解决方法

    用JQuery 判断某个属性是否存在hasAttr的解决方法

    本篇文章介绍了,用JQuery 判断某个属性是否存在hasAttr的解决方法。需要的朋友参考下
    2013-04-04
  • jquery对象和DOM对象的区别介绍

    jquery对象和DOM对象的区别介绍

    jquery对象和DOM对象在使用过程很频繁,正是因为如此,好多朋友都不知道它们之间有什么区别,下面为大家详细介绍下,希望对大家有所帮助
    2013-08-08
  • jquery实现拖拽调整Div大小

    jquery实现拖拽调整Div大小

    这里给大家分享的是一段自己编写的使用jQuery实现拽调整Div层大小的代码,非常实用,推荐给有需要的小伙伴们。
    2015-01-01
  • jQuery mobile的header和footer在点击屏幕的时候消失的解决办法

    jQuery mobile的header和footer在点击屏幕的时候消失的解决办法

    这篇文章主要介绍了jQuery mobile的header和footer在点击屏幕的时候消失的解决办法,通过给header和footer添加 data-position="fixed" 和 data-tap-toggle="false"完成此功能,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-07-07
  • jQuery中find()方法用法实例

    jQuery中find()方法用法实例

    这篇文章主要介绍了jQuery中find()方法用法,实例分析了find()方法的功能、定义及获取匹配元素后代元素的使用技巧,需要的朋友可以参考下
    2015-01-01
  • 利用jquery写的左右轮播图特效

    利用jquery写的左右轮播图特效

    一个利用jquery写的左右轮播图,将jquery框架的链接跟图片替换就可以看到效果了,需要的朋友可以参考下
    2014-02-02
  • jquery提示效果实例分析

    jquery提示效果实例分析

    这篇文章主要介绍了jquery提示效果,以一个简单实例较为详细的分析了jQuery提示效果的实现方法与相关注意事项,具有一定的参考借鉴价值,需要的朋友可以参考下
    2014-11-11
  • idTabs基于JQuery的根据URL参数选择Tab插件

    idTabs基于JQuery的根据URL参数选择Tab插件

    我们的项目用了SunSean的idTabs,但每个tab里的控件会触发postback,或者转到其他页面再转回来,这样当前选中的tab必丢。印度同事不肯用AJAX,无奈今天加班给印度人写个demo,通过回传URL参数来选择tab
    2012-04-04
  • jQuery实现手风琴效果(蒙版)

    jQuery实现手风琴效果(蒙版)

    这篇文章主要介绍了jQuery实现手风琴效果,附带蒙版特效,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-01-01
  • Jquery的hide及toggle方法让超链接慢慢消失

    Jquery的hide及toggle方法让超链接慢慢消失

    点击超链接,超链接就会慢慢的消失,本文采用jquery中的hide方法及toggle方法实现,喜欢的朋友可以参考下
    2013-09-09

最新评论