浏览器向网址

时间:2016-04-20 11:11:59

标签: javascript ajax xml

我正在尝试通过我的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

是不是因为这个我得到了错误。

3 个答案:

答案 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限制。