这是我的table表格,内容部分加了个Id=”tabletext“ ,用于后续获取数据覆盖区域
<table class="table" cellspacing="0" cellpadding="0" width="100%"
align="center" border="0"> <tr> <th> 任务ID </th> <th> 用户名 </th> <th> 最后运行时间
</th> <th> 数据包完成数量 </th> <th> 数据包入库数量 </th> <th> 状态 </th> </tr> <tbody
id="tabletext"> <tr> <td> @Html.DisplayFor(modelItem => item.taskId) </td> <td>
@Html.DisplayFor(modelItem => item.userName) </td> <td>
@Html.DisplayFor(modelItem => item.lastStartTime) </td> <td>
@Html.DisplayFor(modelItem => item.finishDataPacketNum) </td> <td>
@Html.DisplayFor(modelItem => item.finishRecordNum) </td> <td>
@Html.DisplayFor(modelItem => item.taskStatus) </td> </tr> </tbody> </table>
先写一个js更新table的方法,数据是假的,这个看起来就是Ajax的效果,也就是局部刷新。
js很简单,找到id=test的表格内容部分,直接用$(”#“).html()替换table里的内容
@section Scripts{ <script> function myrefresh() { var str =""; for(var i = 0;
i<5; i++){ str +=
"<tr><td>"+i+"</td><td>"+i+"</td><td>"+i+"</td><td>"+i+"</td><td>"+i+"</td><td>"+i+"</td></tr>"
} } $("#test").html(str) setInterval('myrefresh()',3000); </script> }
好,下面我们来上一段真正的Ajax代码
几个关键的地方:
type:要么是GET,要么是POST,大多数时候两个都可以
data:就用KEY,Value对应拼接好就行,后台的形参和Key对应好,就能接收到
url:一般就是你请求的连接地址了,mvc里的是/Controle/action了
dataType:定义的是回台返回给你的数据格式。
如果后台回传过来的是一个对象,一般这里写json,这样用起来很方便,返回过来就是一个json对象,前端直接当做对象一样调用成员变量。
如果回传过来的是string文本之类的字符串,你就写text就行了,拿到的是一个字符串。如果回传过来的是对象,但你依然在dataType上写了text,那就要写一句var
newdata = JSON.pare(data);把这个字符串解析成json对象,这样newdata就成了可以直接调用成员变量的对象了。
success:
当你的指令发到后台,执行成功,并成功返回数据后,就会进入这个方法中,此时的data中就包含了你后端返回的值,在success里折腾吧,将data转换成对象后,就可以随便调用。
动态刷新:
所谓的动态刷新其实就是一个替换和覆盖的过程,如果是table的话,内部就是一些<tr><td>的标签,在success里把获取到的数据重新拼接成和原来<teble>中一样的数据格式,就是一堆<tr><td>组成的字符串,然后把你的数据加进去。
好,最后一步,使用$("#id").html(str)这个方法,通过id灯找到你想刷新数据的地方,直接替换掉里面的内容,动态刷新就实现了。
代码如下,稍作修改就能使用。
<script> function getTableName() { var TableName =
$("#id1").val();//从界面某个标签的id获取你要的值 var DBType = $("#Id2").val(); if (TableName
== "" || TableName == null) { alert("没有数据"); } else { $.ajax({ type:
"POST",//用POST传递数据,GET也可以 url:
"/DbColTypeConfig/getDBType",//我用的是MVC,这样可以直接触发对应的Controle data: { "TableName":
TableName,//把要传递的数据组成Jason类型,向后台传递,直接在形参中接收即可 "DBType": DBType }, dataType:
"json",//定义的是返回数据的格式,直接写json就对了,写text的话还要用JSON.pare()再转换一次 success: function
(data) { if (data == null || data == '') { alert("请联系\n管理员维护数据"); } else { var
str = "";//把数据组装起来 for (var i = 0; i < data.dataInfo.length; i++) { str +=
"<tr><td>" + data.dataInfo[i].tableName + "</td><td>" +
data.dataInfo[i].colName + "</td><td>" + data.dataInfo[i].dbType + "</td><td>"
+ data.dataInfo[i].colId + "</td><td>" + data.dataInfo[i].defaultValue +
"</td><td>" + data.dataInfo[i].colType + "</td><td>" +
data.dataInfo[i].colLength + "</td><td>" + data.dataInfo[i].ver + "</td><td>" +
data.dataInfo[i].isEnable + "</td></tr>"; }
$("#tableText").html(str);//把拼好的样式填到指定的位置,一个Ajax就完成了 } } }); } }; </script>
后端就是一个简单的action,前端传过来的两个参数用形参来接受
路由对应的就是url:/DbColTypeConfig/getDBType
public class DbColTypeConfigControle : Controle { public
DbColTypeConfigViewModel getDBType( string TableName, string DBType) { if
(!string.IsNullOrEmpty(DBType)) { paraDic.Add("DBType", DBType); } if
(!string.IsNullOrEmpty(TableName)) { paraDic.Add("TableName", TableName); }
DbColTypeConfigViewModel dataInfo = new DbColTypeConfigViewModel(); return
dataInfo; } }
热门工具 换一换