使用javascript搜索XML文件
我正在尝试创建一个页面,用户可以在其中输入url到输入框中,单击submit,脚本将返回WebSite页面。(WebSite是一种url缓存服务。例如,如果我“归档”www.google.com,归档页面是www.webcitation.org/65YgIgei6。)因此WebSite有一种查询语法,当给定要缓存的url、电子邮件和参数使用javascript搜索XML文件,javascript,jquery,Javascript,Jquery,我正在尝试创建一个页面,用户可以在其中输入url到输入框中,单击submit,脚本将返回WebSite页面。(WebSite是一种url缓存服务。例如,如果我“归档”www.google.com,归档页面是www.webcitation.org/65YgIgei6。)因此WebSite有一种查询语法,当给定要缓存的url、电子邮件和参数&returnxml=true时,它将返回一个xml文件。(例如,导致一个xml文件,其中标记之间的文本是归档页面。) 因此,我想要一些Javscript(或jq
&returnxml=true
时,它将返回一个xml文件。(例如,导致一个xml文件,其中
标记之间的文本是归档页面。)
因此,我想要一些Javscript(或jquery),它将在xml文件中搜索“
”和“
”并返回这些标记中的url。这是基本的想法
顺便说一句,我读了stackoverflow.com/questions/6648454/search-and-output-data-from-an-xml-file-using-javascript,但我不知道如何根据我的情况调整那里的代码
(*由于垃圾邮件过滤器,从某些链接中删除了“http://”)
谢谢 这就是jQuery构建的目的
没有jQuery的解决方案:
但要注意:这只是一个通用指针。这里可能存在浏览器不兼容。jQuery是用来解析xml文件的。您的问题是如何解析来自另一个域的数据。这是你的答案。 您将
?callback=?“
附加到请求的末尾,并为数据
选项添加jsonp
$.ajax({
url: "http://www.webcitation.org/archive?url=http://www.google.com&email=testtt@test.com&returnxml=true?callback=?",
dataType:'jsonp',
success: function (XMLstring) {
$(XMLstring).find('webcite_url').text();
}
});
哇,太棒了!但有一件事:你复制了xml文件的文本,并将其设置为变量。我的问题是:如何让代码自动执行此操作?换句话说,我如何让代码访问并将变量设置为该文件的内容?哦,因为我查询的是另一个域(website.org),所以我不能使用jquery.get()问题中显示的ajax方法是“如何解析xml”,而不是“如何执行跨域ajax”。由于该服务不提供JSON,简单的答案是“您不能”“。很长的答案是,您必须在服务器上设置一个代理来执行请求。看:好吧,很抱歉。中提供了一种方法,允许在不创建代理的情况下执行跨域ajax(也许我应该早一点提到)。看见该脚本在html文档中搜索
标记的内容。可以对XML文件使用相同的方法吗?我试过了,但没有成功。好的,我试过了,但出现了一个错误(“错误:获取属性XMLDocument.getElementsByTagName的权限被拒绝”)。请看。这是同源策略,您无法从其他域访问内容。因此,请使用一个在服务器上重定向请求的代理,或者尝试类似于“嘿,这看起来更接近我要查找的内容”。然而,我尝试了这个,并得到了一个错误:unterminated regular expression literal…
。我认为这可能是一个与“解析XML”不同的问题,因此我建议您为它提出一个新问题:好的,谢谢,我会的!我认为你让我走上了正确的道路。很高兴,你也可以勾选我的答案,让人们有类似的问题,以便更容易地找到解决方案。快乐编码!新问题@steven-我已经勾选了你的答案。你能告诉我它是否有效吗?(我是新来的)您需要一个服务器端代理。
var iframe = document.createElement("iframe");
iframe.src = "http://www.webcitation.org/archive?url=http://www.google.com&email=testtt@test.com&returnxml=true";
document.body.appendChild(iframe);
iframe.onload = function() {
var url = this.contentDocument.getElementsByTagName("webcite_url")[0].firstChild.nodeValue;
// do whatever you want with the url over here
}
$.ajax({
url: "http://www.webcitation.org/archive?url=http://www.google.com&email=testtt@test.com&returnxml=true?callback=?",
dataType:'jsonp',
success: function (XMLstring) {
$(XMLstring).find('webcite_url').text();
}
});