Javascript jQuery跨域请求返回“未定义”

Javascript jQuery跨域请求返回“未定义”,javascript,ajax,jquery,cross-domain,Javascript,Ajax,Jquery,Cross Domain,在阅读了有关stackoverflow的各种示例后,我编写了以下函数: function showGetResult(crossDomainUrl) { $.ajax({ url: crossDomainUrl, type : 'GET', crossDomain: true, success: function (data) { debug(data); return dat

在阅读了有关stackoverflow的各种示例后,我编写了以下函数:

function showGetResult(crossDomainUrl) {
    $.ajax({
        url: crossDomainUrl,
        type : 'GET',
        crossDomain: true,
        success: function (data) {
            debug(data);
            return data;
        }
    });
}
用这个来称呼它

alert(showGetResult(crossDomainUrl));

但我得到的只是“未定义”,这是在内容脚本内的web浏览器扩展中使用的。

这是因为Ajax请求是异步运行的。返回数据没有任何作用。您可以将其更改为“已更新”,以反映评论中的请求,以便能够下载脚本:

function showGetResult(crossDomainUrl) {
    return $.ajax({
        url: crossDomainUrl,
        type : 'GET',
        dataType: 'script',
        crossDomain: true
     });
}

showGetResult('http://code.jquery.com/ui/1.10.3/jquery-ui.js')
    .done(function(data) {
        alert("success: " + data);
    })
    .fail(function(jqXHR, textStatus, ex) {
        alert("failed: " + textStatus);
    });
对于实际跨域工作的调用,您需要使用jsonp或脚本。有关同源策略的更多信息,请阅读本文档。有关使用jsonp的更多信息,请参阅

上面的代码将把下载的jscript注入dom并执行。

ajax设置查询,并立即返回,因此函数在请求完成之前返回。指定使用success在查询完成时调用的函数


请参阅-更新以指定jsonp和更好的URL

我在代码中对此进行了测试,但没有触发警报,与?相同,在原始代码中,只处理了成功。我已经添加了失败处理程序,请参见,但是为什么它首先会失败?按照您的要求更新了下载脚本的答案。仍然会成功:未定义。谢谢这项工作,但我需要获取一个javascript文件。我尝试了数据类型值jsonp、script和html,但都失败了。请参阅-showGetResult函数仍将返回未定义的,showData返回的并不重要。的可能副本的精确副本虽然类似,但两者都不会像这里的许多其他示例那样解决我的问题,请参阅我的注释-感谢这一点,但我需要获取一个javascript文件。我尝试了数据类型值jsonp、script和html,但都失败了。请参阅-jsfiddle.net/tsyGj@Stacked-你有两个不同的问题。标记为重复的问题解决了返回数据的问题。您的另一个问题是同源策略,我们只能从您的JSFIDLE中分辨出来,而不能从您问题中的任何代码中分辨出来。@Quentin我应该删除这个吗?
function showGetResult(crossDomainUrl) {
    $.ajax({
        url: crossDomainUrl,
        type : 'GET',
        crossDomain: true,
        success: showData
    });
}

function showData(data){
    debug(data);
    return data;
}
showGetResult(crossDomainUrl);