You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DataTable 2.0.6在WebForms(VB)中内置Ajax配置调用失败问题

解决DataTables 2.0.6内置Ajax调用ASP.NET WebForms WebMethod失败的问题

问题核心:直接用DataTables内置Ajax配置调用WebMethod时,参数传递格式和响应解析不符合ASP.NET WebForms的要求,导致后台方法未触发,返回整个HTML页面;而单独用$.ajax获取数据后再初始化DataTable可行。

解决方案

修改DataTables的Ajax配置,调整数据传递方式并指定响应数据的提取路径:

$('#TempEmployeeTable').DataTable({
    ajax: {
        type: 'POST',
        url: 'Index.aspx/TempGetEmployeeData',
        // 用函数返回JSON字符串,确保请求体格式正确
        data: function() {
            return JSON.stringify({ Sqloption: 21 });
        },
        contentType: 'application/json; charset=utf-8',
        dataType: 'json',
        // 提取WebMethod返回的d属性中的实际数据
        dataSrc: function(response) {
            return response.d;
        }
    }
});

原因说明

  1. 参数传递格式问题:
    原无效代码中直接将JSON.stringify的结果赋值给data,DataTables会默认把这个字符串当作普通表单参数(以data为键、JSON字符串为值)发送,而非作为请求体的JSON内容。ASP.NET WebMethod无法解析这种格式的参数,因此不会触发后台方法,最终返回整个页面HTML。
    改用函数返回JSON字符串后,DataTables会将其直接作为请求体发送,符合WebMethod的参数解析要求。

  2. 响应数据解析问题:
    ASP.NET WebMethod返回的JSON会被包裹在d属性中(这是WebForms的默认行为),而DataTables默认会直接使用整个响应对象作为数据源。通过dataSrc函数提取response.d,才能正确获取到后台返回的表格数据。

  3. GET请求的局限性:
    WebMethod默认禁用GET请求,若要使用需额外添加<ScriptMethod(UseHttpGet := True)>特性,且GET请求传递复杂参数容易出现格式问题,因此推荐保持POST请求。

内容的提问来源于stack exchange,提问作者Dyst

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 09:00:18