ASP.NET JSON交互

前端TS示例:

var ServerURL: string = "https://localhost:7053/";

var ClockNo: number = window.setInterval(clock, 1000);//设定定时器
//window.clearInterval(ClockNo);//取消定时器
function clock() { //定时处理函数,这里每分钟和服务器通讯,更新登录授权的 Token
    postData("Home/KeepAlive", MyStatus)
        .then(response => {
            MyStatus =response;
            console.log(MyStatus);
        })
        .catch(error => { console.error(error) });
}


let MyStatus = {
    UserName: "MyName姓名",
    PSW: "123456",
    AliveTime: "2024/02/28 19:42:52.852",
    Loading: false,
    Token:"111254211"
}


//通过讯飞星火获得的函数,可以调用函数体内部实现返回值的处理。
//TypeScript需要 ES2015以上版本
async function postData(UrlRout: string, data: any): Promise<any> {
    const response = await fetch(ServerURL + UrlRout, {
        method: 'POST',
        headers: {
            'Content-Type': 'application/json'
        },
        body: JSON.stringify(data)
    });

    if (!response.ok) {
        throw new Error(`HTTP error! status: ${response.status}`);
    }

    return await response.json();
}

//XMLHttpRequest版本,可以正常POST 和获得返回,
//但目前不能实现再调用的函数体内返回,脱离调用者,使用不方便
//TypeScript中 ES5 可用
function POST_mssage(msg: string, UrlRout: string) {
    var httpRequest: XMLHttpRequest = new XMLHttpRequest();
    httpRequest.open('POST', ServerURL + UrlRout, true);
    httpRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    httpRequest.send(msg);
    httpRequest.onreadystatechange = function (ev: Event) {
        if (httpRequest.readyState == XMLHttpRequest.DONE && httpRequest.status == 200) {//验证请求是否发送成功
            var json = httpRequest.responseText;//获取到服务端返回的数据
            console.log(json);
        }
    }
}

后端C#示例

1:定义一个User类,接收Json类

using System.Runtime.CompilerServices;

namespace qsPJTm.Models
{
    public class USER
    {
        public string UserName { get; set; }        //用户名
        public string PSW { get; set; }             //密码,登录前为明文,登录后为加密
        public string AliveTime { get; set; }       //最近的保活通讯
        public bool Loading { get; set; }           //登录的状态
        public string Token { get; set; }           //USER+PSW+ALIVE 再加密
    }

}

2:HomeController 中 收发Json

public string KeepAlive()
{
    string str= Request.Scheme;
    StreamReader sr = new StreamReader(Request.Body);
    string msg=sr.ReadToEndAsync().Result;
    USER me=JsonSerializer.Deserialize<USER>(msg,JsonSerializerOptions.Default);
    me.AliveTime=DateTime.Now.ToString();
    //JsonSerializerOptions options = new JsonSerializerOptions();
    //options.Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping;
    //msg=JsonSerializer.Serialize(me,options);
    msg = JsonSerializer.Serialize(me);
    return msg;
}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值