ajax

<script type="text/javascript">
    //使用ajax实现异步的方式
    //①原生xhr方式,或自定义封装xhr方法
    //②jq封装的异步方法:ajax(),get(),post(),load(),getJson()方法等等
    //③使用promise(es6)方法实现axios
    function ajax(url, data, method, callback) { //url请求的地址,data发送给后端的数据,method请求的模式(get.post.put,delete) callback回调函数
        var xhr = new XMLHttpRequest();
        xhr.open(method, url, true);//打开异步连接
        xhr.send(data); //发送数据
        xhr.onreadystatechange = function () { //发送过程中的状态监听
            if (xhr.readyState == 4) { //发送完成
                if (xhr.status == 200) {
                    var result = xhr.responseText;
                    callback(result);//调用callback中的方法,处理result
                    return xhr.responseText;//??
                }
            }
        }
    }
    //文档加载完成执行
    window.onload = function () {
        //使用ajax方法实现异步调用
        this.ajax("/My/GetTourists", "", "get", /*(result) => { this.alert(result); }*/function (result) {
            //将result作为表格显示出来
            //将result字符串转换为json数组
            var jsons = JSON.parse(result);
            //遍历jsons,将数组中的每一个元素的数据取出, 放在表格中显示
            var temp = "<tr><td>{{Name}}</td><td>{{Start}}</td><td>{{End}}</td><td>{{Nation}}</td></tr>";
            for (var i = 0; i < jsons.length; i++) {
                var newtemp = temp;
                newtemp = newtemp.replace("{{Name}}", jsons[i]["TouristName"]);
                newtemp = newtemp.replace("{{Start}}", jsons[i]["StartTime"]);
                newtemp = newtemp.replace("{{End}}", jsons[i]["EndTime"]);
                newtemp = newtemp.replace("{{Nation}}", jsons[i]["NationalityName"]);
                $("table").append($(newtemp));
            }
        });
        
    }
</script>

H5

<div class="container"> 
    <table class="table table-bordered table-striped">
        <tr>
            <th>游客姓名</th>
            <th>入境时间</th>
            <th>出境时间</th>
            <th>国籍名称</th>
        </tr>
    </table>
</div>

ajax主要使用XMLHttpRequest,也可以将ajax看做一个方法

后台

//首先需引用  using Newtonsoft.Json;

public string GetTourists()//ajax调用GetTourists 返回一个json数组  在前端 进行数值绑定
    {
        var tours = db.Tourists.Select(p => new
        {
            p.TouristID,
            p.TouristName,
            p.StartTime,
            p.EndTime,
            p.Nationality.NationalityName
        });
        return JsonConvert.SerializeObject(tours);
    }

可实用的方法

Model封装 数据库对象

<div class="container" style="width:400px"> 
    <form action="AddPost" method="post">
        <div class="form-group">
            <label>用户姓名</label>
            <input type="text" name="TouristName" value="" class="form-control" />
        </div>
        <div class="form-group">
            <label>证件号</label>
            <input type="text" name="CardID" value="" class="form-control" />
        </div>
        <div class="form-group">
            <label>入境时间</label>
            <input type="text" name="StartTime" value="" class="form-control" />
        </div>
        <div class="form-group">
            <label>出境时间</label>
            <input type="text" name="EndTime" value="" class="form-control" />
        </div>
        <div class="form-group">
            <label>头像</label>
            <input type="text" name="HeadPic" value="" class="form-control" />
        </div>
        <div class="form-group">
            <label>国籍</label>
            <select class="form-control" name="NationalityID">
                <option value="1">中国</option>
                <option value="2">美国</option>
            </select>
        </div>
        <input type="submit"value="添加" class="btn btn-success form-control" />
    </form>
</div>        

条件:前端name必须和数据库列名相同

//数据封装 装箱
        Tourist tourist = new Tourist();
        tourist.TouristName = Request["TouristName"];
        tourist.CardID = Request["CardID"];
        tourist.StartTime = Convert.ToDateTime(Request["StartTime"]);
        tourist.EndTime = Convert.ToDateTime(Request["EndTime"]);
        tourist.HeadPic = Request["HeadPic"];
        tourist.NationalityID = Convert.ToInt32(Request["NationalityID"]);
        Tourist tourist = RequesModel<Tourist>();
//和下面方法等同Tourist tourist = RequesModel<Tourist>();
public T RequesModel<T>() where T : new() //where T:new()表示泛型约束,T类型
    {
        T model = new T();
        //获取对象的所有属性
        Type modelType = model.GetType();
        //从类型对象中获取该对象的所有属性
        PropertyInfo[] props = modelType.GetProperties();
        //遍历所有的属性
        foreach (var prop in props)
        {
            //取出属性的名称
            string propName = prop.Name;
            //按属性名称获取表单数据
            string propVal = Request[propName];
            //判断获取的值是否存在
            if (!string.IsNullOrEmpty(propVal))
            {
                //值获取到 就可以给model赋值了
                //获取属性的数据类型
                Type propType = prop.PropertyType;//可能存在可空类型 所有需要判断
                //获取可空类型的基础类型
                Type underType = Nullable.GetUnderlyingType(propType);
                prop.SetValue(model,Convert.ChangeType(propVal,underType??propType));//给model对象的prop对应的属性赋值
                //??的意思是如果前方为空就获取后方    前方不为空就获取前方
            }
        }
        return model;
    }
最后修改:2021 年 10 月 15 日
如果觉得我的文章对你有用,请随意赞赏