我正在尝试通过我的javascript代码中的ajax获取xml
$(document).ready(function(){
$.ajax({
url: 'https://santander.easycruit.com/intranet/intranett/export/xml/vacancy/list.xml',
cache: false,
dataType: 'xml',
crossDomain: true,
success: function (xml) {
debugger;
$(xml).find('Vacancy').each(function () {
$(this).find("Location").each(function () {
var name = $(this).text();
alert(name);
});
});
},
statusCode: {
404: function () {
debugger;
alert('Failed');
}
}
});
});
但是当我运行代码时,我收到错误XMLHttpRequest cannot load https://santander.easycruit.com/intranet/intranett/export/xml/vacancy/list.xml?_=1460979186038. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://mymachinename' is therefore not allowed access
您可以看到有一些数字附加到网址,如_=1460979186038
是不是因为这个我得到了错误。
答案 0 :(得分:1)
_ = 1460979186038部分由jquery ajax添加,作为防止缓存的机制。如果我现在记得那个号码只是一个随机+时间戳或类似的东西。
来源:http://api.jquery.com/jquery.ajax/
您收到错误的原因是No 'Access-Control-Allow-Origin' header is present on the requested resource
,这意味着您尝试发送跨域邮件,但服务器不允许这样做。
答案 1 :(得分:0)
很明显,您面临着跨域请求的问题。
如果您可以控制此服务器,则需要在服务器中添加标题以允许跨域或用于测试目的,您可以使用我在Firefox中的add来开发和处理CORS:https://addons.mozilla.org/en-US/firefox/addon/cross-domain-cors/?src=ss
答案 2 :(得分:0)
基于评论讨论,我认为你应该做类似代理服务器的事情。试试这个PHP代码:
<?php
header("Content-type: text/xml");
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"http://santander.easycruit.com/intranet/intranett/export/xml/vacancy/list.xml");
$output = curl_exec($ch);
它只是从传递的URL中获取所需的XML并将其显示在页面上。 将脚本放在您的javascript所在的服务器上,并使用ajax调用您的服务器。这应该消除CORS限制。