jQuery ajax调用webservice注意事项


Posted in jQuery onOctober 08, 2017

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 相关文章推荐
jQuery插件HighCharts绘制简单2D柱状图效果示例【附demo源码】
Mar 21 jQuery
jQuery实现可兼容IE6的遮罩功能详解
Sep 19 jQuery
jquery实现左右轮播图效果
Sep 28 jQuery
jQuery实现通过方向键控制div块上下左右移动的方法【测试可用】
Apr 26 jQuery
JS文件中加载jquery.js的实例代码
May 05 jQuery
在Vue项目中引入JQuery-ui插件的讲解
Jan 27 jQuery
jquery实现图片无缝滚动 蒙版遮蔽效果
Jan 11 jQuery
jQuery实现简易QQ聊天框
Feb 10 jQuery
jquery实现垂直手风琴菜单
Mar 04 jQuery
js、jquery实现列表模糊搜索功能过程解析
Mar 27 jQuery
jQuery 添加元素和删除元素的方法
Jul 15 jQuery
jQuery加PHP实现图片上传并提交的示例代码
Jul 16 jQuery
jQuery完成表单验证的实例代码(纯代码)
Sep 30 #jQuery
jquery之基本选择器practice(实例讲解)
Sep 30 #jQuery
jquery鼠标悬停导航下划线滑出效果
Sep 29 #jQuery
jQuery选择器之子元素过滤选择器
Sep 28 #jQuery
jQuery选择器之属性过滤选择器详解
Sep 28 #jQuery
jquery实现左右轮播图效果
Sep 28 #jQuery
JQuery 选择器、DOM节点操作练习实例
Sep 28 #jQuery
You might like
杏林同学录(四)
2006/10/09 PHP
PHP大批量数据操作时临时调整内存与执行时间的方法
2011/04/20 PHP
PHP变量的定义、可变变量、变量引用、销毁方法
2013/12/20 PHP
PHP中把数据库查询结果输出为json格式简单实例
2015/04/09 PHP
php基础教程
2015/08/26 PHP
javascript实现划词标记+划词搜索功能
2007/03/06 Javascript
原生js的数组除重复简单实例
2016/05/24 Javascript
jQuery解决IE6、7、8不能使用 JSON.stringify 函数的问题
2016/05/31 Javascript
分享javascript实现的冒泡排序代码并优化
2016/06/05 Javascript
强大Vue.js组件浅析
2016/09/12 Javascript
JS动态计算移动端rem的解决方案
2016/10/14 Javascript
Easyui使用Dialog行内按钮布局的实例
2017/07/27 Javascript
详解angularJS+Ionic移动端图片上传的解决办法
2017/09/13 Javascript
微信小程序使用setData修改数组中单个对象的方法分析
2018/12/30 Javascript
vue中filters 传入两个参数 / 使用两个filters的实现方法
2019/07/15 Javascript
JS获取动态添加元素的方法详解
2019/07/31 Javascript
打开电脑上的QQ的python代码
2013/02/10 Python
python线程锁(thread)学习示例
2013/12/04 Python
Python实现简单的可逆加密程序实例
2015/03/05 Python
django+js+ajax实现刷新页面的方法
2017/05/22 Python
python的一些加密方法及python 加密模块
2019/07/11 Python
python定间隔取点(np.linspace)的实现
2019/11/27 Python
利用OpenCV和Python实现查找图片差异
2019/12/19 Python
Python opencv相机标定实现原理及步骤详解
2020/04/09 Python
pycharm 代码自动补全的实现方法(图文)
2020/09/18 Python
澳大利亚首屈一指的在线购物目的地:Kogan.com
2017/02/02 全球购物
创业计划书的内容步骤和要领
2014/01/04 职场文书
医校毕业生自我鉴定
2014/01/25 职场文书
户外拓展活动方案
2014/02/11 职场文书
企业宣传标语
2014/06/09 职场文书
学校综治宣传月活动总结
2014/07/02 职场文书
群教个人对照检查材料
2014/08/20 职场文书
2014旅游局领导班子四风问题对照检查材料思想汇报
2014/09/19 职场文书
2014年重阳节老干部座谈会局领导发言稿
2014/09/25 职场文书
幼儿教师年度个人总结
2015/02/05 职场文书
行政后勤人员工作计划应该怎么写?
2019/08/16 职场文书