我在 xmlhttpresponse 中返回了以下文本,我需要通过管道分隔符来解析它。它应该返回一个数组,其中位置 0 是 Block1,位置 1 是节点名 json 数据,位置 2 是用户 ID 数据。
({"body": "Block1|[{\"nodeName\":\"DIV\",\"nodeIndex\":20,\"x_offset\":131,\"y_offset\":47}]|33|7|33|[{\"UserID\":\"d8b4e408-b013-417c08aaa-7cd3658f4160_05_01_2015_21_32_46_000\",\"os\":\"Windows\",\"browser_width\":1366,\"Count\":16}}]"})
我已经尝试过这个,但目前正在尝试找出解决方案,但我的大脑出现了故障。
function outputResult() {
var response = invocation.responseText;
var textDiv = document.getElementById("textDiv");
textDiv.innerHTML += response;
var arr = response.body.split("|");
console.log(arr[0])
}
最佳答案
用“|”分割字符串后需要解析JSON数据字符,如 for 循环中的代码:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<h1>result</h1>
<div id="textDiv"></div>
<script>
function outputResult() {
var response = ({"body": "Block1|[{\"nodeName\":\"DIV\",\"nodeIndex\":20,\"x_offset\":131,\"y_offset\":47}]|33|7|33|[{\"UserID\":\"d8b4e408-b013-417c08aaa-7cd3658f4160_05_01_2015_21_32_46_000\",\"os\":\"Windows\",\"browser_width\":1366,\"Count\":16}]"});
var textDiv = document.getElementById("textDiv");
textDiv.innerHTML += response;
var arr = response.body.split("|");
for(var i in arr){
if(arr[i].indexOf('[') === 0)
arr[i] = JSON.parse(arr[i]);
}
console.log(arr);
}
outputResult();
</script>
</body>
</html>
但是,textDiv.innerHTML += response; 不会按照您的预期显示响应文本。相反,它将呈现为 [object Object] ,因此您必须手动设置要显示的格式。
关于Javascript 从 xmlhttpresponse 解析响应文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30002982/