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

前端POST JSON至PHP写入文件时触发XML Parsing Error: no root element found

解决XML Parsing Error: no root element found的问题

这个问题我之前也碰到过!其实根源在于你的PHP脚本没有返回任何响应内容,而jQuery在未指定响应类型的情况下,会默认尝试按XML格式解析返回结果——空内容自然没有XML根元素,所以控制台就抛出了这个错误。

下面给你两种简单的解决办法:

方法1:让PHP输出有效的响应内容

修改你的PHP代码,在文件末尾添加一段响应输出,比如返回JSON格式的成功信息,既解决解析问题,还能让前端拿到处理状态:

<?php
$myfile = fopen("blog.json", "w") or die("Unable to open file!");
$txt = $_POST["json"];
fwrite($myfile, $txt);
fclose($myfile);

// 添加响应输出,告诉前端请求处理完成
echo json_encode(['status' => 'success', 'message' => '博客数据已成功写入']);
?>

对应的前端代码可以指定dataType为json,直接解析返回的对象:

var json = JSON.stringify(blogObj);
$.post("addBlog.php", { json: json }, function(data, status) {
    alert(`Sent! ${data.message}`);
}, 'json');

方法2:在前端指定响应类型为文本

如果不想修改PHP代码,也可以在jQuery的post请求里明确指定dataType为text,这样jQuery就不会尝试解析XML,而是直接把响应当作纯文本处理:

var json = JSON.stringify(blogObj);
$.post("addBlog.php", { json: json }, function(data, status) {
    alert("Sent!");
}, 'text');

两种方法都能解决那个XML解析错误,推荐第一种,因为这样前端还能拿到请求处理的状态信息,更便于后续的错误处理~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:14:37