Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 延迟返回异步设置为false的$.getJSON_Javascript_Jquery_Json_Ajax - Fatal编程技术网

Javascript 延迟返回异步设置为false的$.getJSON

Javascript 延迟返回异步设置为false的$.getJSON,javascript,jquery,json,ajax,Javascript,Jquery,Json,Ajax,我尝试了在其他问题中看到的各种解决方案,但没有成功地记录data.ip 当我记录foo时,我只返回undefined。为什么在async设置为false的情况下,ip属性没有被记录 泰 $.ajaxSetup({ 异步:false }); var getIp=function(){ var ip; $.getJSON('//freegoip.net/json/?callback=?',函数(数据){ ip=data.ip; }); 返回ip; } var foo=getIp(); consol

我尝试了在其他问题中看到的各种解决方案,但没有成功地记录
data.ip

当我记录
foo
时,我只返回
undefined
。为什么在
async
设置为
false
的情况下,
ip
属性没有被记录

$.ajaxSetup({
异步:false
});
var getIp=function(){
var ip;
$.getJSON('//freegoip.net/json/?callback=?',函数(数据){
ip=data.ip;
});
返回ip;
}
var foo=getIp();
console.log(foo)

您没有正确实现AJAX。我更改了您的函数,以便它将返回一个
Promise
(请注意函数中的
return
关键字)。之后,在
内部。然后()
可以传递一个回调函数,该函数将在
Ajax
完成后执行。
$。getJSON()
Ajax
的一个实现()

注意:

我强烈建议不要在任何
xhr/Ajax
中使用
async:false
,因为它会减慢网站的速度。最好使用以下代码:

var getIp=function(){
var ip;
返回$.getJSON('//freegoip.net/json/?callback=?',函数(数据){
返回data.ip;
});
}
getIp().then(函数(res){
控制台日志(res);
})

您没有正确实现AJAX。我更改了您的函数,以便它将返回一个
Promise
(请注意函数中的
return
关键字)。之后,在
内部。然后()
可以传递一个回调函数,该函数将在
Ajax
完成后执行。
$。getJSON()
Ajax
的一个实现()

注意:

我强烈建议不要在任何
xhr/Ajax
中使用
async:false
,因为它会减慢网站的速度。最好使用以下代码:

var getIp=function(){
var ip;
返回$.getJSON('//freegoip.net/json/?callback=?',函数(数据){
返回data.ip;
});
}
getIp().then(函数(res){
控制台日志(res);
})

从请求的页面返回的JSON有效吗?@Marcin:是的,从请求的页面返回的JSON有效。从未、从未、从未将
async
设置为
false
。这将严重损害您网页的性能。请不要正确使用异步回调模式。$.getJSON不接受从请求页面返回的有效JSON吗?@Marcin:Yes,从请求页面返回的有效JSON。永不,是否将
async
设置为
false
。这将严重损害您网页的性能。请不要使用
async:false
正确使用异步回调模式$。getJSON不接受编辑后的回答中的
async:false