Html/Javascript-如何从窗口/文档(Solr)获取JSON/XML内容?
我有点小问题。我想用JavaScript打开一个新窗口。都很好。 我将新窗口保存在变量中: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
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
});