如何将var从功能1复制到功能2?

时间:2018-08-10 14:45:00

标签: jquery

我尝试将var1从第一个功能复制到第二个功能,但是我没有得到任何alert()的回复

$(document).ready(function(){
  var var1;
  $.ajax({
    url: "https://api.ipify.org?format=json",
    success: function(response) {
      var data = response;
      var1 = data.ip;
      $('#test').html(var1);
    }
  });

  // I want the var1 to be copied to the second function, to this:
  // The alert is for example, but it does not give me anything back

  $(function() {
    var var2 = var1;
    $('#test2').html(var1);

    $.ajax({
      type: 'get',
      url: "http://mywebsite.com/testip?"+var2, // just some query that i need to use with the ip from var1
      dataType: "html",
      success: function(data) {
        alert(var2);
      },
    });
  });
});

http://jsfiddle.net/evu3dat0/

1 个答案:

答案 0 :(得分:0)

首先,您应该将文档准备就绪合并为一个,因为您只需要一个。

第二,您无法像尝试那样执行逻辑。 Ajax是异步。这意味着您将启动第一个请求,并且在完成之前,您还将尝试第二个请求。由于第二个请求需要第一个请求的响应中的数据,因此这是无效逻辑。

要解决此问题,可以从第一个ajax成功调用第二个ajax方法,届时数据将可供第二个ajax请求使用。

$(document).ready(function() {
  var var1;
  
  $.ajax({
    url: "https://api.ipify.org?format=json",
    success: function(response) {
      var data = response;
      var1 = data.ip;
      $('#test').html(var1);

      //I want the var1 to be copied to the second function, to this:
      //The alert is for example, but it does not give me anything back
      $('#test2').html(var1);

      $.ajax({
        type: 'get',
        url: "http://mywebsite.com/testip?" + var1, // just some query that i need to use with the ip from var1
        dataType: "html",
        success: function(data) {
          alert(var1);
        },
      });
    }
  });
});