Javascript jQuery从RESTfulWeb服务解析xml?
我有一个从careerbuilders api提取数据的代码。该链接在浏览器上测试时运行良好,但我似乎无法解析其中的任何内容。能告诉我怎么了吗 html代码:Javascript jQuery从RESTfulWeb服务解析xml?,javascript,jquery,ruby-on-rails,xml,xml-parsing,Javascript,Jquery,Ruby On Rails,Xml,Xml Parsing,我有一个从careerbuilders api提取数据的代码。该链接在浏览器上测试时运行良好,但我似乎无法解析其中的任何内容。能告诉我怎么了吗 html代码: <div class="main"> Companies: </div> 下面是一个JSFIDLE实时示例:我认为它现在可以工作了: $(document).ready(function () { $.ajax({ type: "GET", url: "ht
<div class="main">
Companies:
</div>
下面是一个JSFIDLE实时示例:我认为它现在可以工作了:
$(document).ready(function () {
$.ajax({
type: "GET",
url: "http://api.careerbuilder.com/v1/jobsearch?DeveloperKey=WDHL4Z86PBQY29Z7ZQQS&Location=Canada",
dataType: "xml",
success: function(xml)
{
xmlParser(xml);
}
});
});
在这里拉小提琴:
控制台响应:无法加载XMLHttpRequest。访问控制不允许原点允许原点
这是一个JSFIDLE限制 在您的情况下,不会定义
xml
。您必须将成功回调封装在另一个函数中,该函数将调用xmlParser
函数
您所做的是调用xmlParser
函数,并将返回值指定为success回调,这是不需要的。因此,您将它包装在另一个函数中,并从该函数调用xmlParser
,在这种情况下,xml响应将正确地传递给xmlParser
,您将能够解析它
代码可能如下所示:
$(document).ready(function () {
$.ajax({
method: "GET",
url: "http://api.careerbuilder.com/v1/jobsearch?DeveloperKey=WDHL4Z86PBQY29Z7ZQQS&Location=Canada",
dataType: 'xml',
success: function (response) {
xmlParser(response);
}
});
});
function xmlParser(response){
var xml = $.parseXML(response);
$(xml).find("JobSearchResult").each(function () {
$(".main").append(
$(this).find("Company").text()
);
});
}
alert(xml)或console.log(xml)的输出是什么?我的猜测是,您只需要xml.find()就可以了。要做到这一点,唯一的方法就是知道API是否提供了jsonp响应,但由于它们的响应中不包含跨域头,我认为它们不会支持它(快速搜索,没有找到任何引用jsonp的内容)。您需要将对careerbuilder API的调用封装在其他脚本(如php)中,并从ajax调用php脚本。这是每个浏览器javascript实现中嵌入的限制。如果所调用的站点不支持jsonp,也不包含跨域标题,那么ajax就无法正常工作。唯一的解决办法是编写一个中介脚本并从ajax.Nop调用它,这是对api.careerbuilder.com的限制。他们需要在响应中添加标题“Access Control Allow Origin”,这样ajax就可以让跨站点获取。是的,我认为这是“Access Control Allow Origin”的问题。我甚至在我的本地主机上尝试过,但仍然受到限制。我去谷歌一下,看看会有什么结果。请看我对你问题的评论。
$(document).ready(function () {
$.ajax({
method: "GET",
url: "http://api.careerbuilder.com/v1/jobsearch?DeveloperKey=WDHL4Z86PBQY29Z7ZQQS&Location=Canada",
dataType: 'xml',
success: function (response) {
xmlParser(response);
}
});
});
function xmlParser(response){
var xml = $.parseXML(response);
$(xml).find("JobSearchResult").each(function () {
$(".main").append(
$(this).find("Company").text()
);
});
}