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;
    }
}
原文地址:https://www.cnblogs.com/vinsonLu/p/3906784.html