为什么最终控制台日志未定义?变量时间具有全局作用域,而ajax调用是异步的。
这是我的代码:
var time; $.ajax({ async: false, type: 'GET', url: "http://www.timeapi.org/utc/now.json", success: function(data) { console.log(data); time=data; }, error: function(data) { console.log("ko"); } }); console.log(time);
更改async为布尔值false。
async
http://api.jquery.com/jQuery.ajax/
var time; $.ajax({ async: false, type: 'GET', url: "http://www.timeapi.org/utc/now.json", success: function (data) { console.log(data); time = data; }, error: function (data) { console.log("ko"); } }); console.log(time);
另外,请注意,如果您需要在dataType: 'jsonp'此处使用跨域,则将无法同步-请使用Promise。
dataType: 'jsonp'
var time; $.ajax({ dataType: 'jsonp', type: 'GET', url: "http://www.timeapi.org/utc/now.json", success: function (data) { time = data; }, error: function (data) { console.log("ko"); } }) .then(function(){ // use a promise to make sure we synchronize off the jsonp console.log(time); });
使用Q.js在此处查看这样的示例:
演示