0

我知道我一定遗漏了一些明显的东西,但我似乎不明白为什么我的代码/方法不起作用。当我尝试在 AJAX 调用中成功调用匿名函数时(我只是想获取一个 XML 文件),它永远不会触发。但是,如果我将成功更改为单纯的警报('成功!')这很好。任何人都可以阐明为什么会这样吗?

$("#target").click(function() {
    alert( "Handler for .click() called." );
    var part = document.getElementById('partname').value;
    var url = "http://parts.igem.org/xml/part." + part;
    alert(url);

    $.ajax({
        type: 'GET',
        url: url,
        dataType: 'xml',
        success: function(response) {
            console.log('response = '+response);
        }
    });

});

再次,使用:成功:警报(“成功”);

代替匿名函数可以正常工作。完全不解这里。谢谢!

4

2 回答 2

2

由于相同的源策略,AJAX 调用必须来自同一个域或站点......

同源策略防止从一个源加载的文档或脚本从另一个源获取或设置文档的属性。该政策可以追溯到 Netscape Navigator 2.0。

从另一个站点获取 XML 的常用方法之一是使用 PHP 和 CURL。不过,您只列出了客户端语言。我会研究获取这些数据的其他方法......

为什么会有这个政策?

于 2013-11-09T04:11:42.740 回答
0

您可以尝试实施 CORS,但这需要您有权访问其他域。您需要在“ACCESS-CONTROL-ALLOW-ORIGIN:*”或“ACCESS-CONTROL-ALLOW-ORIGIN: http://www.domainThatMakesTheRequest.com ”的请求域中设置响应标头

于 2014-03-21T19:28:37.050 回答