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

jQuery AJAX请求返回JSON被追加d:null问题求助

解决ASMX AJAX返回JSON末尾追加d:null的问题

咱们先理清ASMX Web服务的默认逻辑:ASP.NET的ASMX服务返回JSON时,会自动把数据包裹在d属性里,这是框架的安全设计,正常返回结构应该是{"d": 你的数据对象},不会出现末尾追加d:null的情况。你遇到的问题大概率是服务端代码或前端处理环节出了问题,咱们一步步排查:

1. 检查服务端Web方法的实现

首先确保你的Web方法配置正确:

  • 必须标记[WebMethod]和[ScriptMethod(ResponseFormat = ResponseFormat.Json)](需要引入System.Web.Script.Services命名空间)
  • 不要手动拼接JSON字符串,直接返回.NET实体对象,让框架自动完成序列化。示例代码如下:
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public YourResourceModel GetbyID(int id)
{
    // 从数据库或其他数据源获取对应数据,直接返回实体对象
    return yourDataAccess.GetResourceById(id);
}

如果服务端代码里有多余的输出操作(比如Response.Write("d:null")),就会导致返回的JSON被追加无效内容,这时候要删掉这些额外输出。

2. 优化前端AJAX代码

你的前端代码有几个可以调整的点,避免潜在问题:

  • 不要手动拼接JSON请求体,用JSON.stringify()生成更安全可靠
  • 检查success回调的处理逻辑:如果服务端正确返回了对象,data.d已经是解析好的JavaScript对象,不需要再用$.parseJSON()转换

调整后的AJAX代码:

$('#datatable').on("click", ".editButton", function () { 
    $('#myModal').focus(); 
    var id = $(this).data('id'); 
    $.ajax ({ 
        type: "post", 
        contentType: "application/json;charset=utf-8", 
        url: 'GetECWResourceInfo_Json.asmx/GetbyID', 
        data: JSON.stringify({id: id}), 
        dataType: "json", 
        success: function (data) { 
            // 直接使用data.d即可,无需额外解析
            var tbDetails = data.d; 
            $.each(tbDetails, function(index, item) {
                // 这里写你的数据渲染逻辑
            });
        },
        error: function(xhr, status, error) {
            // 可以在这里打印错误信息,方便排查问题
            console.log(xhr.responseText);
        }
    });
});

3. 排查原始响应内容

如果还是没解决,打开浏览器开发者工具(F12),在Network标签里找到这个AJAX请求,查看Response的原始内容:

  • 如果返回内容是{"d": {...}}d:null,说明服务端输出了多余内容,要检查服务端代码里的额外输出语句
  • 如果返回内容是{"d": null},说明你的Web方法没有正确获取到数据,要排查数据查询逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:55:22