前端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
相关产品推荐
相关产品推荐

