javascript - 在回调期间设置变量

标签 javascript jquery ajax

以下 jQuery 代码尝试在 ajax GET 请求回调期间将客户端的 IP 地址存储在全局变量中。

代码

  var userip = null;
  $.ajax({
    url: "http://ipinfo.io",
    type: 'get',
    dataType: 'jsonp',
    async: false,
    success: function(data) {
      userip = data.ip;
      console.log(userip); // prints unique ip address
    }
  }).done(console.log(userip)); // prints null

知道 GET 请求通常是异步执行的(但需要另外执行),我在 JSON 规范中标记了 async: false。为了增加措施,我调用 done() 以确保请求在继续之前已完成。

尽管如此,打印 userip 在 GET 请求后返回 null,但在 ajax 成功回调期间打印唯一的客户端 IP。

任何解释将不胜感激。提前致谢。

最佳答案

.done() 需要回调。尝试换掉

console.log(userip)

function() { console.log(userip); }

关于javascript - 在回调期间设置变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34865013/

相关文章:

jQuery Ajax POST 请求通过 Laravel 作为 GET 发送

javascript - 使用 javascript 调用随机值

javascript - 自执行函数奇怪的行为?

javascript - 暂时交换段落

javascript - 编辑 javascript 时 Eclipse 挂起

javascript - 编辑 bootstrap-table 中的行

c# - 禁用/启用数据列表复选框上的外部 asp 按钮控件选中 javascript?

javascript - 如何用jquery平滑移动模拟类的秒针

jquery - 在 Laravel 中使用 Jquery 获取 base_url

javascript - 使用 JavaScript 和 AJAX,我还需要 HTML <form> 标签吗?我还需要使用 "submit"按钮向服务器提交表单吗?