我需要在axios响应中获得一些字符串之间的文本,我有这种语法但不工作,即使我尝试只通过响应。对res prop的数据值?并在控制台中打印结果,但我只得到一个未定义的消息。
提前谢谢你们。
<script>
import Axios from 'axios';
export default {
data() {
res: "",
report: ""
},
methods: {
sendTest() {
Axios.post('http://server/',JSON.parse(Payload))
.then(response => {
this.res = response.data
this.report = this.substr(
this.res.indexOf('<TAG1>') + 1,
this.res.indexOf('</TAG1>')
)
console.log(this.report);
})
.catch(e => {
console.log(e.response)
});
},
}
}
</script>
首先您应该检查response.data
是否为字符串。如果是字符串,则必须解析xml数据。
parser = new DOMParser();
xmlDoc = parser.parseFromString(response.data,"text/xml");
this.res = xmlDoc.getElementByTagName("tag")[0].textContent
但是你必须关心旧的IE版本。它们不支持DOMParser。如果是旧的浏览器,你必须添加:
if (window.DOMParser) {
parser = new DOMParser();
xmlDoc = parser.parseFromString(text,"text/xml");
} else {
xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async = false;
xmlDoc.loadXML(text);
}
this.res = xmlDoc.getElementByTagName("tag")[0].textContent
如果您的响应。数据已经是解析过的XML,您只需执行以下操作:
this.res = response.data.getElementByTag("tag")[0].textContent