Html/Javascript-如何从窗口/文档(Solr)获取JSON/XML内容?

Html/Javascript-如何从窗口/文档(Solr)获取JSON/XML内容?,javascript,json,xml,solr,Javascript,Json,Xml,Solr,我有点小问题。我想用JavaScript打开一个新窗口。都很好。 我将新窗口保存在变量中: var testWindow = window.open(url, "_blank"); url参数是指向Solr服务器核心的url-我在新窗口中打开搜索查询。响应格式可以是json或xml——不管是什么。我现在想要的是:获取响应结果并将它们保存到JavaScript数组中,以便我可以使用它们。 问题是:例如,JSON中的结果如下所示: { "responseHeader":{ "sta

我有点小问题。我想用JavaScript打开一个新窗口。都很好。 我将新窗口保存在变量中:

var testWindow = window.open(url, "_blank");
url
参数是指向Solr服务器核心的url-我在新窗口中打开搜索查询。响应格式可以是json或xml——不管是什么。我现在想要的是:获取响应结果并将它们保存到JavaScript数组中,以便我可以使用它们。 问题是:例如,JSON中的结果如下所示:

  {
  "responseHeader":{
    "status":0,
    "QTime":0,
    "params":{
      "q":"test",
      "indent":"true",
      "wt":"json"}},
  "response":{"numFound":0,"start":0,"docs":[]
  }}
或者使用类似XML的格式

<?xml version="1.0" encoding="UTF-8"?>
<response>

<lst name="responseHeader">
  <int name="status">0</int>
  <int name="QTime">0</int>
  <lst name="params">
    <str name="q">test</str>
    <str name="indent">true</str>
    <str name="wt">html</str>
  </lst>
</lst>
<result name="response" numFound="0" start="0">
</result>
</response>


如何获取整个页面内容并将其保存到JS数组中?

您必须等待新窗口完全加载。至少这是像您这样的问题的常见来源。

您可以使用AJAX解决这个问题,因此您可以在请求中发送url,并以JSON格式获取响应,然后对数据执行您需要执行的操作。 或者如果您喜欢使用jQuery

使用jQuery的ajax示例

$.ajax ({
type: "post",
url: "search.html",
data:{param1:"value", param2:"value"}
}).done (function (data){
   //work with the data variable is a Json

});

有必要打开新窗户吗?如果你用AJAX捕捉到响应呢?我从来没有用过AJAX。你会怎么做?我现在试着进行测试:
testWindow.onload=function(){console.log(testWindow.document.documentElement.innerHTML);}
我在控制台中没有得到任何输出,但在新窗口中确实有一些内容?当然。例如,页面的源代码包含Solr服务器的JSON响应。是的,这是另一个问题:JSON不是DOM树,您没有documentElement,甚至可能没有document。如果您现在没有预先确定响应的类型,那么需要使用ajax加载它,请使用
getResponseHeader('content-type')
检查mime类型,并分别使用
JSON.parse()
DOMParser()
解析响应文本。
testWindow.document.documentElement.outerHTML
$.ajax ({
type: "post",
url: "search.html",
data:{param1:"value", param2:"value"}
}).done (function (data){
   //work with the data variable is a Json

});