将子字符串应用于axios响应



我需要在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

最新更新