昨天在学习到Ajax时读取xml文件操作的时候出现了这个问题
xhr.responseXML不能渠道xml文件的信息
如图所示:
我查了许多的资料之后大部分所发是因为response的contentType默认是text/html;charset=utf-8;这个格式可以传送text文本,但是现在需要传送的是xml文件,在ajax页面获取的就是document对象。
但是知道是这个原因之后再在php文件中添加了header(‘content-type:text/xml;charset=utf-8’);这句代码之后还是不行,所以还请哪位大佬帮忙看看
代码如下:
html文件:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>title</title>
</head>
<body>
<h2>请求xml文件</h2>
<input type="button" value="ajax获取xml文件" />
</body>
</html>
<script type="text/javascript">
//点击 请求xml
document.querySelector('input').onclick=function(){
var xhr=new XMLHttpRequest();
//设置请求行
xhr.open('POST','backXML.php');
//设置请求头(get请求可以省略)
// xhr.setContentType("text/xml;charset=utf-8");
//注册状态改变事件
xhr.onreadystatechange=function(){
//判断状态&请求是否成功并使用数据
if(xhr.readyState==4&&xhr.status==200){
console.log(xhr.responseText);
//如果返回的是xml使用responseXML接收
console.log(xhr.responseXML);
//页面中默认的文档对象
//console.log(document);
}
}
//发送请求
xhr.send(null);
}
</script>
php代码:文件名:backXML.php
<?php
//告诉浏览器 返回的是xml编码格式的utf-8
header('content-type:text/xml;charset=utf-8');
//接受发送过来的数据
//读取xml
//=>哪个分类中 文件分类中找
//参数1 文件中的路径名
$xmlString =file_get_contents('backXML.xml');
//返回读取的xml
echo $xmlString;
?>
xml代码:文件名:backXML.xml
<?xml varsion="1.0" encoding="UTF-8"?>
<root>
<name>周林林</name>
<age>18</age>
<skinll>唱歌</skinll>
</root>
还请各位看到的大佬多多指教!!!