HTTP Request JS - 如何从列表中提取数字,将它们保存到变量中并使用它们进行进一步处理?

时间:2017-05-31 07:25:29

标签: javascript arrays http meteor xmlhttprequest

我已经搜索过该主题,但找不到适合我的答案。

我通过执行HTTP Get请求从外部服务器收到答复。服务器返回一个包含多个数字的列表,我需要进一步处理。在替换我不需要的信息之后,列表看起来像这样:

request.status()

问题是列表 CAN 看起来像这样。服务器答案也可能如下所示:

  <int>123</int>
  <int>987</int>
  <int>7536</int>
  <int>879812</int>
  <int>5697231</int>

或者就像:

<int>189977</int>
<int>7897</int>
<int>77</int>

你知道,我不知道我会得到多少数字作为回应,甚至不知道单个数字有多长。

每个数字代表一个结果,这对于执行HTTP请求的用户很重要。更确切地说,这些数字是来自其他站点(发送请求的服务器)的搜索链接的一部分。

我的目的是在用户发出请求后,他应该被重定向到一个页面,其中显示内部正确数字的链接,以便用户可以点击链接以找到合适的结果。

我的建议是首先消除列表中的“<int>6</int> ”和“<int>,而不是其次保存每个数字比如Var或ReactiveVar,而不是使用它们来在该页面上呈现链接

我能够将数字保存到会话变量(我正在使用Meteor)并在页面上呈现它们,但这不是我想要的。不幸的是,我不知道如何执行其他事情......

有人知道如何实现这一目标吗?我会非常感谢任何有用的东西!

感谢。

1 个答案:

答案 0 :(得分:2)

如果值已经在XML中,您可以使用DOM解析器来检索它们。

// Add a <root> element so the XML can be parsed properly
const xml = '<root><int>123</int>' +
  '<int>987</int>' +
  '<int>7536</int>' +
  '<int>879812</int>' +
  '<int>5697231</int></root>';

const parser = new DOMParser();
const xmlDoc = parser.parseFromString(xml,'text/xml');

const intElements = xmlDoc.getElementsByTagName('int');

let ints = [];

for (const intElement of intElements) {
  // Use parseInt() to convert the strings to numbers
  ints.push(parseInt(intElement.childNodes[0].nodeValue, 10));
}

// Use ints as you would like    
document.getElementById('result').innerHTML = JSON.stringify(ints);