在JS范围内遇到一些问题。我知道它不是AJAX,因为我已经变为异步:false,但我无法让jQuery Promise为我工作。我真的无法理解为什么apiData返回undefined。
var url = 'http://www.myjson';
/* The API call */
function getData(url) {
var text;
result = $.ajax({
type: 'GET',
url: url,
async: false,
jsonp: 'callback',
dataType: 'jsonp',
success: function(data)
{
text = data;
//console logging here returns text data fine
return text;
}
});
return text;
}
apiData = getData(url);
console.log(apiData);
//returns undefined for apiData
答案 0 :(得分:3)
看起来跨域请求不允许进行同步调用。
根据jQuery文档:
“跨域请求和dataType:”jsonp“请求不支持同步操作”
http://api.jquery.com/jQuery.ajax/
我还没有测试过,但是在您的情况下,async可能会更改为“true”,因为您使用的是jsonp作为数据类型。因此,在尝试读取数据之前,尚未调用onSuccess处理程序。
答案 1 :(得分:0)
试试这个
var url = 'http://www.myjson';
/* The API call */
function getData(url) {
var text;
result = $.ajax({
type: 'GET',
url: url,
async: false,
jsonp: 'callback',
dataType: 'json',
success: function(data)
{
text = data;
//console logging here returns text data fine
return text;
}
});
}
apiData = getData(url);
console.log(apiData);
//returns undefined for apiData