AJAX get:匿名函数在成功时不被调用

时间:2013-11-09 03:52:58

标签: javascript jquery ajax anonymous-function

我知道我必须遗漏一些明显的东西,但我似乎无法理解为什么我的代码/方法不起作用。当我尝试在我的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);
        }
    });

});

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

代替匿名功能正常工作。在这里完全不解。谢谢!

2 个答案:

答案 0 :(得分:2)

由于same origin policy...

,AJAX调用必须来自同一个域或网站
  

相同的原始策略会阻止从一个文档或脚本加载的文档或脚本   来自获取或设置文档属性的来源   起源。此政策可以追溯到Netscape Navigator 2.0。

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

Why does this policy exist?

答案 1 :(得分:0)

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