在阅读了stackoverflow的各种例子后,我写了这个函数:
function showGetResult(crossDomainUrl) {
$.ajax({
url: crossDomainUrl,
type : 'GET',
crossDomain: true,
success: function (data) {
debug(data);
return data;
}
});
}
并使用此
调用它alert(showGetResult(crossDomainUrl));
但我得到的只是'undefined
',这是在内容脚本中的网络浏览器扩展中使用的。
答案 0 :(得分:0)
这是因为Ajax请求以异步方式运行。 return data
没有做任何事情。您可以将其更改为(更新以反映评论中的请求以便能够下载脚本):
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或脚本。有关同源策略的更多信息,请阅读此wiki。有关使用jsonp的详细信息,请参阅this answer。
上面的代码将注入 dom 中下载的jscript并执行。
答案 1 :(得分:-1)
$.ajax()
设置查询,并立即返回,因此函数在请求完成之前返回。指定使用success
完成查询时调用的函数。
function showGetResult(crossDomainUrl) {
$.ajax({
url: crossDomainUrl,
type : 'GET',
crossDomain: true,
success: showData
});
}
function showData(data){
debug(data);
return data;
}
showGetResult(crossDomainUrl);
请参阅http://jsfiddle.net/5J66u/8/ - (已更新以指定jsonp及其更好的网址)