javascript - 如果 jQuery AJAX 请求成功/失败,则执行条件代码

标签 javascript jquery if-statement

如果以下 jQuery 函数的 if/else 语句没有可用的 IPv6 或 IPv4 地址,我将如何显示?如果该类型的 IP 地址不可用,请求将失败。

$(function() {
  $.getJSON("https://v6.ident.me/.json",
    function(json) {
      document.write("Your IPv6 Address: ", json.address);
    }
  );

  $.getJSON("https://v4.ident.me/.json",
    function(json) {
      document.write("Your IPv4 Address: ", json.address);
    }
  );
});

我还想知道确保地址输出顺序一致的最佳方法。

最佳答案

你想做些什么取决于你是否得到答案,或者没有答案(连接失败)。

因为通过 AJAX 接收 JSON 是异步的,所以在这种情况下您不能使用常规的 if/else 语句。相反,您应该使用 callbacks jQuery 提供的。

要确保特定顺序,您可以做两件事:

  1. 按给定顺序执行回调;或
  2. 将数据放在页面的指定位置。

我将演示后一种选择。

$(function() {

  function checkIP(version) {
    $.get('https://ipv' + version + '.myip.info/', 'text')
      .done(function(ip) {
        $('#v' + version).text('IPv' + version + ': ' + ip);
      })
      .fail(function() {
        $('#v' + version).text('IPv' + version + ': not available');
      });
  }

  checkIP(4);
  checkIP(6);
  
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p id="v4"></p>
<p id="v6"></p>

由于问题中最初使用的服务出现故障,因此此答案使用了不同的 URL。
因此,数据也是纯文本而不是 JSON。你可以看看older versions阅读这篇文章,了解如何处理 JSON。
当然,无论使用哪种服务,想法都是一样的。

关于javascript - 如果 jQuery AJAX 请求成功/失败,则执行条件代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43570665/

相关文章:

javascript - JQuery - 在加载元素时处理元素

regex - 批处理 - 将变量与正则表达式进行比较

java - 带数组字符串的缓冲读取器

javascript - 函数获取函数内的函数名称?

javascript - 传递表单数据快速 react redux

javascript - application/ld+json与javascript数据交换

javascript - 数组差异和更改时更新值

javascript - jQuery 验证表单,突出显示无效输入

javascript - 使 droppables 只接受某些draggables?

c++ - 为什么切换 if else 语句的顺序会导致错误?