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

ASP.NET Core 2 API遇XML Parsing Error: no root element found问题求助

搞定ASP.NET Core 2 + Ajax的XML解析错误问题

嘿,我太懂这种Postman调用正常但Ajax就翻车的糟心情况了!你遇到的XML Parsing Error: no root element found,本质上是前端和服务器在数据格式上没对上——Postman会自动帮你处理请求头,但Ajax得手动配置,咱们一步步来排查解决:

最可能的原因:请求头没配置对

ASP.NET Core的API会根据请求里的Accept头来决定返回什么格式的数据,如果你的Ajax没告诉服务器“我要JSON”,它可能默认返回XML,而你的前端没处理XML,就会报这个错。

赶紧给你的Ajax代码加上这两个关键请求头,或者直接指定dataType:

$.ajax({
    url: '/api/favorites/',
    type: 'GET', // 换成你实际用的请求方法,比如POST
    dataType: 'json', // 直接告诉jQuery我要JSON格式的响应
    headers: {
        'Content-Type': 'application/json',
        'Accept': 'application/json'
    },
    success: function(data) {
        // 这里处理返回的数据就好
    },
    error: function(xhr, status, err) {
        console.log(err);
    }
});

检查API是否真的返回了有效数据

虽然Postman调用正常,但要确认Ajax请求触发时,API有没有返回空响应或者格式不对的内容。比如某些逻辑在Ajax请求时返回了null而不是空数组?

修改你的API代码,确保无论什么情况都返回合法的JSON:

[HttpGet]
public IActionResult GetFavorites()
{
    var favorites = _favoriteService.GetAll();
    // 就算没有数据,也返回空数组,别让响应空着
    return Ok(favorites ?? new List<Favorite>());
}

排查页面里的其他jQuery代码干扰

你说同一页面还有其他JS代码,说不定全局的Ajax设置被改了——比如有人全局设置了dataType: 'xml'?

这种情况下,在你的Ajax请求里显式指定dataType: 'json'就能覆盖全局设置,就是上面代码里加的那行,亲测有效!

调试小妙招

打开浏览器F12的Network面板,找到你的API请求:

  • 看Request Headers里的Accept是不是application/json
  • 看Response Headers里的Content-Type是不是application/json; charset=utf-8
  • 看Response的内容是不是正经的JSON,如果是空的或者XML,那就是服务器端的锅,回去调API逻辑

按上面的步骤来,应该很快就能解决这个问题啦!

内容的提问来源于stack exchange,提问作者Yusuf Y.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 07:13:17