使用 JQuery 从外部源获取 XML
Posted
技术标签:
【中文标题】使用 JQuery 从外部源获取 XML【英文标题】:Get XML With JQuery from an external source 【发布时间】:2014-05-26 16:39:56 【问题描述】:我想创建一个小网页,询问该服务器 (http://resumemanagerrestserver.juanwolf.cloudbees.net/) 并使用收到的 XML。
但问题是当我这样做时:
var resumes;
jQuery.ajax(
type: "GET",
url: "http://resumemanagerrestserver.juanwolf.cloudbees.net/?callback=?",
contentType: "text/plain; charset=utf-8 ",
dataType: "xml",
success: function (data, status, jqXHR)
resumes = data;
,
error: function (jqXHR, status)
// error handler
);
我有这样的回应: ML 解析错误:找不到元素位置:moz-nullprincipal:2041758e-b063-4f84-898d-2ff62d487a5d 第 1 行,第 1 列:
我用 Advanced REST 客户端尝试了一个 GET 请求,它可以工作。
如果有人有解决方案,我将不胜感激(并在我的余生中爱他)
编辑
我将旧代码更改为:
function getResumes()
var resumes;
var url = 'http://resumemanagerrestserver.juanwolf.cloudbees.net/?callback=?';
var xhr = createCORSRequest('GET', url);
xhr.onreadystatechange = function() if (xhr.readyState==4) alert("It worked!");;
xhr.setRequestHeader("Content-type", "application/xml");
xhr.setRequestHeader("Connection", "close");
if (!xhr)
alert('CORS not supported');
return;
// Response handlers.
xhr.onload = function()
resumes = xhr.responseText;
alert('Response from CORS request to ' + url + ': ' + resumes);
;
xhr.onerror = function()
$('#errorPopupLink').get(0).click();
;
xhr.send();
return resumes;
现在,Firebug 中的请求不是红色的,但我仍然有这个
XML Parsing Error: no element found Location: moz-nullprincipal:d9ee4013-542d-4f65-a310-e1719d99bcae Line Number 1, Column 1
有人有解决办法吗?
【问题讨论】:
我遇到了同源错误,所以你可能不能这样做。 正如 adeneo 所写,您可能对同源策略有问题。如果您将调用页面和脚本放在同一域resumemanagerrestserver.juanwolf.cloudbees.net 上,请测试它是否有效。另见:ways to circumvent the same-origin policy 这可能是问题所在。我以为第一页告诉浏览器 AJAX-Requests 可能会离开域。 我找到了解决方案。我感到有点羞愧,但现在它很好用。我忘了在服务器端为 GET 请求添加标头,我只是将它用于 PUT 请求... 您应该解释解决您的问题的原因作为答案,以便其他人可以学习。 :) 【参考方案1】:我的问题的答案很简单。问题来自服务器。 编辑部分的代码客户端是对的。
这里的服务器(http://resumemanagerrestserver.juanwolf.cloudbees.net/)是一个使用 Spring 的 JEE 服务器。 事实是,如果您不允许外部客户端使用您自己的资源(请参阅http://en.wikipedia.org/wiki/Cross-origin_resource_sharing),它们将被阻止。所以我只是将 CORS 头添加到 get* 函数中,现在它运行良好。
如果您正在寻找如何使用 spring 创建 CORS 标头,这篇文章可以帮助您:http://zhentao-li.blogspot.fr/2012/06/enable-cors-support-in-rest-services.html
【讨论】:
以上是关于使用 JQuery 从外部源获取 XML的主要内容,如果未能解决你的问题,请参考以下文章
html + google.maps.InfoWindow() + 外部源 xml 文档 (XMLHttpRequest)
如何通过 API “input type='file'” 标签使用本地文件更改视频源...没有 Jquery 或外部库