当前位置: 首页 > news >正文

ajax与json

使用以下方法必须注意路径是否正确,这点是绝大部分问题的根源。

取数例子:不刷新获取登录信息

登录前:

登录后:

页面jq:

        $("#btnLogin").click(function () {
            var name = $("#loginName");
            var pass = $("#loginPass");
            var code = $("#txtCode");

            if ($.trim(name.val()) == "") { name.focus(); return alert("请输入你的用户名!"); }
            if ($.trim(pass.val()) == "") { pass.focus(); return alert("请输入你的密码!"); }
            if ($.trim(code.val()) == "") { code.focus(); return alert("请输入你的验证码!"); }

            $.ajax({
                contentType: "application/json",
                url: "/WS/vinson.asmx/Logon",
                data: "{userName:'" + name.val() + "',userPass:'" + pass.val() + "',code:'" + code.val() + "'}",
                type: "POST",
                dataType: "json",
                success: function (json) {
                    json = eval("(" + json.d + ")");

                    if (json.success == "error") {
                        $("#divLogin").show();

                        alert(json.msg);
                        code.val("");
                        pass.val("");
                        pass.focus();
                        UpdateImage();
                    } else if (json.success == "success") {
                        $("#imgFace").attr("src", "/gamepic/face" + json.fid + ".gif");
                        var name = SubString(json.account, 12, "");
                        $("#dlInfo").html("<span>帐号:" + name + "</span><span>ID:" + json.gid + "</span>").attr("title", json.account);
                        $("#mOrder").html(json.morder);
                        $("#loves").html(json.loves);
                        $("#mPat a").before(json.UserPat+" ");
                        $("#counts").html(json.counts);
                        if (parseInt(json.dayCount) > 0)
                            $("#qd ul").css("background", "url(../images/qiandao_n.png) 0 0px no-repeat");
                        else
                            $("#qd ul").css("background", "url(../images/qiandao_n.png) 0 -60px no-repeat");
                        $("#divLogin").hide();
                        $("#divInfo").show();
                    }
                },
                error: function (err, ex) {
                    alert(err.responseText);
                    UpdateImage();
                }
            });
        })
vinson.asmx文件:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml.Linq;

using Game.Entity.Accounts;
using Game.Facade;
using Game.Utils;
using System.Text;
using System.Collections.Generic;
using Game.Kernel;

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

    public vinson () {

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

    [WebMethod]
    public string HelloWorld() {
        return "Hello World";
    }

    private AccountsFacade accountFacade = new AccountsFacade();
    private DataControl gData = new DataControl();
    /// <summary>
    /// 用户登录
    /// </summary>
    /// <param name="userName"></param>
    /// <param name="userPass"></param>
    /// <param name="code"></param>
    /// <returns></returns>
    [WebMethod]
    public string Logon(string userName, string userPass, string code)
    {
        string msg = "";

        if (TextUtility.EmptyTrimOrNull(userName) || TextUtility.EmptyTrimOrNull(userPass))
        {
            msg = "抱歉!您输入的用户名或密码错误了。";
            return "{success:'error',msg:'" + msg + "'}";
        }

        //验证码错误
        if (!code.Equals(Fetch.GetVerifyCode(), StringComparison.InvariantCultureIgnoreCase))
        {
            msg = "抱歉!您输入的验证码错误了。";
            return "{success:'error',msg:'" + msg + "'}";
        }

        Message umsg = accountFacade.Logon(userName, userPass);
        if (umsg.Success)
        {
            UserInfo ui = umsg.EntityList[0] as UserInfo;
            ui.LogonPass = TextEncrypt.EncryptPassword(userPass);

            Fetch.SetUserCookie(ui.ToUserTicketInfo());
            string mOrder = ui.MemberOrder == 0 ? "普通会员" : ui.MemberOrder == 1 ? "蓝钻会员" : ui.MemberOrder == 2 ? "黄钻会员" : ui.MemberOrder == 3 ? "白钻会员" : "红钻会员";
            int UserPat = (int)gData.SelectValue("select UserPat from AccountsInfo where UserID=" + ui.UserID, "DBAccounts", 0);
            int counts = (int)gData.SelectValue("select count(*) from RecordSignIn where UserID=" + ui.UserID + " and month(CollectDate)=" + System.DateTime.Now.Month, "DBRecord", 0);
            int dayCount = (int)gData.SelectValue("select count(*) from RecordSignIn where UserID=" + ui.UserID + " and convert(varchar(100),CollectDate,23)='" + System.DateTime.Now.ToString("yyyy-MM-dd") + "'", "DBRecord", 0);
            msg = "{success:'success',account:'" + ui.Accounts + "',gid:'" + ui.GameID + "',dayCount:'" + dayCount + "',counts:'" + counts + "',UserPat:'" + UserPat + "',loves:'" + ui.LoveLiness + "',morder:'" + mOrder + "',fid:'" + ui.FaceID + "'}";
        }
        else
        {
            msg = "{success:'error',msg:'" + umsg.Content + "'}";
        }
        return msg;
    }

    /// <summary>
    /// 获取用户登录信息
    /// </summary>
    /// <returns></returns>
    [WebMethod]
    public string GetUserInfo()
    {
        UserTicketInfo userTick = Fetch.GetUserCookie();
        if (userTick == null) return "{}";
        Message umsg = accountFacade.GetUserGlobalInfo(userTick.UserID, 0, "");
        if (umsg.Success)
        {
            UserInfo ui = umsg.EntityList[0] as UserInfo;
            string mOrder = ui.MemberOrder == 0 ? "普通会员" : ui.MemberOrder == 1 ? "蓝钻会员" : ui.MemberOrder == 2 ? "黄钻会员" : ui.MemberOrder == 3 ? "白钻会员" : "红钻会员";
            int UserPat = (int)gData.SelectValue("select UserPat from AccountsInfo where UserID=" + ui.UserID, "DBAccounts", 0);
            int counts = (int)gData.SelectValue("select count(*) from RecordSignIn where UserID=" + ui.UserID + " and month(CollectDate)=" + System.DateTime.Now.Month, "DBRecord", 0);
            int dayCount = (int)gData.SelectValue("select count(*) from RecordSignIn where UserID=" + ui.UserID + " and convert(varchar(100),CollectDate,23)='" + System.DateTime.Now.ToString("yyyy-MM-dd") + "'", "DBRecord", 0);
            return "{success:'success',account:'" + ui.Accounts + "',gid:'" + ui.GameID + "',dayCount:'" + dayCount + "',counts:'" + counts + "',UserPat:'" + UserPat+"',loves:'" + ui.LoveLiness + "',morder:'" + mOrder + "',fid:'" + ui.FaceID + "'}";
        }
        return "{}";
    }

    /// <summary>
    /// 检测用户名
    /// </summary>
    /// <param name="userName"></param>
    /// <returns></returns>
    [WebMethod]
    public string CheckName(string userName)
    {
        Message umsg = accountFacade.IsAccountsExist(userName);
        if (umsg.Success)
        {
            return "{success:'success'}";
        }
        return "{success:'error',msg:'" + umsg.Content + "'}";
    }

    /// <summary>
    /// 检测昵称
    /// </summary>
    /// <param name="userName"></param>
    /// <returns></returns>
    [WebMethod]
    public string CheckNickName(string nickName)
    {
        if (accountFacade.IsNickNameExist(nickName))
        {
            return "{success:'success'}";
        }
        return "{success:'error'}";
    }

    /// <summary>
    /// 用户魅力排名
    /// </summary>
    /// <returns></returns>
    [WebMethod]
    public string GetUserLoves()
    {
        StringBuilder msg = new StringBuilder();
        IList<UserInfo> users = accountFacade.GetUserInfoOrderByLoves();
        if (users == null) return "{}";
        msg.Append("[");
        foreach (UserInfo user in users)
        {
            msg.Append("{userName:'" + user.NickName + "',loves:'" + user.LoveLiness + "'},");
        }
        msg.Remove(msg.Length - 1, 1);
        msg.Append("]");
        return msg.ToString();
    }
}

可以使用这种方法跳到asmx页面做一些事情,而不仅仅是像上面那样取数:

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

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

    public Lottery () {

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

    [WebMethod]
    public string HelloWorld() {
        return "Hello World";
    }

    private DataControl gData = new DataControl();

    [WebMethod]
    public string insertLotteryLog(string LotteryID, string UserID)
    {
        string msg = "";

        string strClientIP = "";
        if (System.Web.HttpContext.Current.Request.ServerVariables["HTTP_VIA"] != null)
            strClientIP = System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].Split(new char[] { ',' })[0];
        else
            strClientIP = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];

        List<string[]> sqls = new List<string[]>();
        //1.插入抽奖记录
        string sql = "insert into QPRecordDB.dbo.RecordLotteryLog (UserID,LotteryID,ClientIP,CollectDate) values (" + UserID + "," + LotteryID + ",'" + strClientIP + "',getdate())";
        sqls.Add(new string[] { "DBRecord", sql });


        if (gData.ExecuteMultiTran(sqls))
        {
            msg = "{success:'success',msg:'insert success'}";
        }
        else
        {
            msg = "{success:'error',msg:'insert failed'}";
        }
        return msg;
    }

    [WebMethod]
    public string LotteryFee(string UserID)
    {
        string msg = "";

        List<string[]> sqls = new List<string[]>();
        //1.扣手续费
        long Score = (long)gData.SelectValue("select Score from QPTreasureDB.dbo.GameScoreInfo where UserID=" + UserID, "DBTreasure", 0);
        if (Score >= 200)
        {
            string sql = "update QPTreasureDB.dbo.GameScoreInfo set Score=Score-200 where UserID=" + UserID;
            sqls.Add(new string[] { "DBTreasure", sql });


            if (gData.ExecuteMultiTran(sqls))
            {
                msg = "{success:'success'}";
            }
            else
            {
                msg = "{success:'error'}";
            }
        }
        else
            msg = "{success:'arrears'}";
        return msg;
    }

    [WebMethod]
    public string FeeOver(string UserID,string FeeTime)
    {
        string msg = "";
        int RecordID = (int)gData.SelectValue("select RecordID from RecordLotteryFee where UserID=" + UserID + " and convert(varchar(100),CollectDate,23)=convert(varchar(100),getdate(),23)", "DBRecord", 0);
        
        List<string[]> sqls = new List<string[]>();
        string sql = "update QPRecordDB.dbo.RecordLotteryFee set FeeTime=" + FeeTime + " where RecordID=" + RecordID;
        sqls.Add(new string[] { "DBRecord", sql });
        if (gData.ExecuteMultiTran(sqls))
        {
            msg = "{success:'success'}";
        }
        else
        {
            msg = "{success:'error'}";
        }

        return msg;
    }

    [WebMethod]
    public string getLotteryName(string LotteryID)
    {
        string msg = "";
        string LotteryName = gData.SelectValue("select LotteryName from Lottery where LotteryID=" + LotteryID, "DBNativeWeb", "").ToString();

        msg = "{lotteryname:'" + LotteryName + "'}";

        return msg;
    }
}

 

相关文章:

  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • RPC
  • UI2Code智能生成Flutter代码——版面分析篇
  • ios设备唯一标识获取策略
  • Windows下使用资源管理器管理FTP指南
  • 激活函数汇总
  • java压缩 GZIP进行简单压缩,ZIP进行多文件保存
  • mongoDB 文档操作_增
  • 我的开源项目:FLV封装格式分析器
  • 【Leetcode】104. 二叉树的最大深度
  • SDI,ASI,HDMI,DP等接口的区别
  • Luogu P3181 [HAOI2016]找相同字符 广义$SAM$
  • 主流视音频平台参数
  • python中的with语句
  • LAV Filter 源代码分析 4: LAV Video (2)
  • 【跃迁之路】【477天】刻意练习系列236(2018.05.28)
  • Android组件 - 收藏集 - 掘金
  • flask接收请求并推入栈
  • hadoop集群管理系统搭建规划说明
  • Java 最常见的 200+ 面试题:面试必备
  • JavaScript/HTML5图表开发工具JavaScript Charts v3.19.6发布【附下载】
  • js
  • JS笔记四:作用域、变量(函数)提升
  • k8s如何管理Pod
  • Laravel5.4 Queues队列学习
  • log4j2输出到kafka
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • 阿里云ubuntu14.04 Nginx反向代理Nodejs
  • 安卓应用性能调试和优化经验分享
  • 持续集成与持续部署宝典Part 2:创建持续集成流水线
  • 通过来模仿稀土掘金个人页面的布局来学习使用CoordinatorLayout
  • 第二十章:异步和文件I/O.(二十三)
  • ​LeetCode解法汇总2583. 二叉树中的第 K 大层和
  • ​决定德拉瓦州地区版图的关键历史事件
  • ​用户画像从0到100的构建思路
  • #pragma once
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  • (C语言)共用体union的用法举例
  • (二十一)devops持续集成开发——使用jenkins的Docker Pipeline插件完成docker项目的pipeline流水线发布
  • (十)【Jmeter】线程(Threads(Users))之jp@gc - Stepping Thread Group (deprecated)
  • (十二)python网络爬虫(理论+实战)——实战:使用BeautfulSoup解析baidu热搜新闻数据
  • (五)c52学习之旅-静态数码管
  • (五)大数据实战——使用模板虚拟机实现hadoop集群虚拟机克隆及网络相关配置
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • .NET/C# 使用 SpanT 为字符串处理提升性能
  • .NET学习全景图
  • .net最好用的JSON类Newtonsoft.Json获取多级数据SelectToken
  • ::什么意思
  • @EnableAsync和@Async开始异步任务支持
  • @拔赤:Web前端开发十日谈
  • [100天算法】-目标和(day 79)
  • [Android]Android开发入门之HelloWorld
  • [AutoSar NVM] 存储架构
  • [BUG]vscode插件live server无法自动打开浏览器
  • [BZOJ 1032][JSOI2007]祖码Zuma(区间Dp)