从函数返回getJSON响应

Returning getJSON response from a function

本文关键字:响应 getJSON 返回 函数      更新时间:2023-09-26

我有一个javascript文件,希望在其中反复调用相同的getJSON调用。例如:

$(document).ready(function() {
  $('#validate').click(function() {
    var url;
    url = 'http://myurl';
    $.getJSON(url, function(data) {
      if (data[0].response.status === 'ok') {
        $('#validate_text').html("data validated");
      } else {
        $('#validate_text').html("data Not Valid");
      }
    });
  });
});

这是可行的,我想将其重构为:

$(document).ready(function() {
  $('#validate').click(function() {
    var url;
    url = 'http://myurl';
    data = myjsonfunction(url);
      if (data[0].response.status === 'ok') {
        $('#validate_text').html("DLS / NTS Validated");
      } else {
        $('#validate_text').html("DLS / NTS Not Valid");
      }
  });
});

其中myjsonfunction(url)是一个独立的函数,我可以传递URL,它返回原始的getJSON数据。我看到了一些例子,其中您在getJSON块等之外设置了一个已经定义的变量,但我似乎无法使其中任何一个发挥作用。

尝试使用.then(),因为data是异步的,如果可以在myjsonfunction(url) 响应之前同步调用

$(document).ready(function() {
  $('#validate').click(function() {
    var url;
    url = 'http://myurl';
    data = myjsonfunction(url);
    data.then(function(response) {
      if (response[0].response.status === 'ok') {
        $('#validate_text').html("DLS / NTS Validated");
      } else {
        $('#validate_text').html("DLS / NTS Not Valid");
      }
    }, function err(jqxhr, textStatus, errorThrown) {
         console.log(erroThrown)
    })
  });
});