Javascript 为什么不';jquery数据表在搜索后是否填充了新更新的数据?
我从WebAPI填充我的jQuery Datatable(版本:1.10.15),它可以工作,但当我通过searchbox在Datatable中搜索时,它不会用更新的数据填充Datatable。为什么? 我检查了,它发送搜索值并从服务器带来更新的数据,但不使用新返回的数据填充表Javascript 为什么不';jquery数据表在搜索后是否填充了新更新的数据?,javascript,jquery,css,datatables,datatables-1.10,Javascript,Jquery,Css,Datatables,Datatables 1.10,我从WebAPI填充我的jQuery Datatable(版本:1.10.15),它可以工作,但当我通过searchbox在Datatable中搜索时,它不会用更新的数据填充Datatable。为什么? 我检查了,它发送搜索值并从服务器带来更新的数据,但不使用新返回的数据填充表 函数显示() { $('#示例')。数据表({ //“处理”:对, “服务器端”:正确, “检索”:正确, “毁灭”:真的, “分页”:正确, //“cont
函数显示()
{
$('#示例')。数据表({
//“处理”:对,
“服务器端”:正确,
“检索”:正确,
“毁灭”:真的,
“分页”:正确,
//“contentType”:“application/json;charset=utf-8”,
“ajax”:http://localhost:28071/Users"
});
}
更新:
C#api代码:
namespace WebApiHimHer.Controllers
{
public class UsersController : ApiController
{
[HttpGet]
public DTResult GetData([FromUri]DTParameters v)
{
List<string[]> s = new List<string[]>();
//List<basicoperations> s = new List<basicoperations>();
basicoperations bo= new basicoperations();
s = bo.getUsers(v.length, v.start, 1, v.sortOrder, v.search.Value);
DTResult r = new DTResult();
r.draw = 1;
r.recordsFiltered = s.Count;
r.recordsTotal = 100; ;
r.data = s;
return r;
}
}
public class DTResult
{
public int draw { get; set; }
public int recordsTotal { get; set; }
public int recordsFiltered { get; set; }
public List<string[]> data { get; set; }
}
public abstract class DTRow
{
public virtual string DT_RowId
{
get { return null; }
}
public virtual string DT_RowClass
{
get { return null; }
}
public virtual object DT_RowData
{
get { return null; }
}
}
public class DTParameters
{
public int draw { get; set; }
public DTColumn[] columns { get; set; }
public DTOrder[] order { get; set; }
public int start { get; set; }
public int length { get; set; }
public DTSearch search { get; set; }
public string sortOrder
{
get
{
return columns != null && order != null && order.Length > 0
? (columns[order[0].Column].Data + (order[0].Dir == DTOrderDir.DESC ? " " + order[0].Dir : string.Empty))
: null;
}
}
}
public class DTColumn
{
public string Data { get; set; }
public string Name { get; set; }
public bool Searchable { get; set; }
public bool Orderable { get; set; }
public DTSearch Search { get; set; }
}
public class DTOrder
{
public int Column { get; set; }
public DTOrderDir Dir { get; set; }
}
public enum DTOrderDir
{
ASC,
DESC
}
public class DTSearch
{
public string Value { get; set; }
public bool Regex { get; set; }
}
}
名称空间webapihimmer.Controllers
{
公共类用户控制器:ApiController
{
[HttpGet]
公共DTResult GetData([FromUri]DTV参数)
{
列表s=新列表();
//列表s=新列表();
BasicCoperations bo=新的BasicCoperations();
s=bo.getUsers(v.length,v.start,1,v.sortOrder,v.search.Value);
DTResult r=新的DTResult();
r、 绘图=1;
r、 记录过滤=s.计数;
r、 recordsTotal=100;
r、 数据=s;
返回r;
}
}
公共类DTResult
{
公共int draw{get;set;}
public int recordsTotal{get;set;}
公共int记录过滤{get;set;}
公共列表数据{get;set;}
}
公共抽象类DTRow
{
公共虚拟字符串DT_RowId
{
获取{return null;}
}
公共虚拟字符串DT_RowClass
{
获取{return null;}
}
公共虚拟对象DT_RowData
{
获取{return null;}
}
}
公共类DTP参数
{
公共int draw{get;set;}
公共DTColumn[]列{get;set;}
公共DTOrder[]顺序{get;set;}
public int start{get;set;}
公共整数长度{get;set;}
公共DTSearch{get;set;}
公共字符串排序器
{
收到
{
返回列!=null&&order!=null&&order.Length>0
?(列[order[0].Column].Data+(order[0].Dir==DTOrderDir.DESC?”“+order[0].Dir:string.Empty))
:null;
}
}
}
公共类DTColumn
{
公共字符串数据{get;set;}
公共字符串名称{get;set;}
公共布尔可搜索{get;set;}
公共布尔可排序对象{get;set;}
公共DTSearch{get;set;}
}
公共秩序
{
公共int列{get;set;}
公共DTOrderDir{get;set;}
}
公共枚举DTOrderDir
{
ASC,
描述
}
公共类DTSearch
{
公共字符串值{get;set;}
公共布尔正则表达式{get;set;}
}
}
我在初始表加载和执行搜索后发布请求和响应
初始荷载后:
- 请求:
- 请求:
- 答复:
function show(){
$("#example").DataTable({
serverSide: true,
processing: true,
columns : [
{ data : 'FirstName' },
{ data : 'LastName' }
],
ajax: {
url: "https://api.myjson.com/bins/384sr",
dataSrc : ''
}
});
}
show();
Html
<table id="example" class="display">
<thead>
<tr>
<th>First Name</th>
<th>Last Name</th>
</tr>
</thead>
名字
姓
原因是发送和接收的
draw
参数不相同,因为我在服务器代码中使用了draw
static,因此不匹配。我返回了与发送时相同的draw
参数
从: 此对象响应的绘图计数器-来自绘图 参数作为数据请求的一部分发送。请注意,它是 出于安全原因,建议您将此参数强制转换为 整数,而不是简单地回显客户端发送的内容 draw参数,以防止跨站点脚本(XSS) 攻击
不确定是否发现错误,但请检查此项 验证配置/system.webServer/security/requestFiltering/requestLimits@maxQueryString在applicationhost.config或web.config文件中进行设置。
//对我来说,这是两件事。
//用javascript包装表
//函数_displayItems(data){var table=$('#。。。
//然后使用结束括号:
//摧毁然后清除
productsTable.destroy();
productsTable.clear();
}
函数_displaytems(){
获取(uri)
.then(response=>response.json())
.然后(数据=>\u显示项目(数据))
.catch(error=>console.error('无法获取项目',error));
}
var tableName=$('#data').DataTable({
“处理”:对,
“数据”:数据,
“栏目”:[
{“姓名”