它不起作用,因为您的 ajax 请求是异步的。使用警报,您有一个超时,然后返回值。您可以通过添加使您的脚本工作(注意使用您不能发出同步请求async: false
的跨域jsonp
请求!)但实际上我不推荐您,因为您的 JS 将阻塞,直到请求准备好。更好的方法是使用回调:
function getTotalPages(callback) {
var valuePage;
$.getJSON('Data/product.json').
done(function(data) {
$.each(data, function(key, value) {
if (typeof callback === 'function') {
callback(value);
}
});
});
}
这是一个如何使用异步请求执行此操作的示例:
function getResult(callback) {
var url = 'https://api.twitter.com/1/statuses/user_timeline.json?include_entities=true&include_rts=true&screen_name=mgechev&count=3';
$.ajax({
url: url,
success: function (data) {
if (typeof callback === 'function') {
callback(data);
}
},
dataType: 'jsonp'
});
}
getResult(function (data) {
var variable = data;
alert(variable);
});
JSFiddle:http: //jsfiddle.net/vWnHJ/
在示例中,我将函数传递getResult
给函数并使用从请求中接收到的数据调用给定函数。