从外部源获取XML使用JQuery

时间:2014-04-12 13:24:19

标签: javascript jquery xml spring cors

我想创建一个小网页,询问此服务器(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列:

我尝试使用高级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

有人有解决方案吗?

1 个答案:

答案 0 :(得分:0)

我的问题的答案很简单。问题来自服务器。 编辑部分中的代码客户端是正确的。

此处的服务器(http://resumemanagerrestserver.juanwolf.cloudbees.net/)是使用Spring的JEE服务器。 事实上,如果您不允许外部客户使用您自己的资源(请参阅http://en.wikipedia.org/wiki/Cross-origin_resource_sharing),它们将被阻止。所以我只是添加CORS头来获取*函数,现在它运行良好。

如果您正在搜索如何使用spring创建CORS标头,这篇文章可以帮助您:http://zhentao-li.blogspot.fr/2012/06/enable-cors-support-in-rest-services.html