从函数返回getJSON响应

时间:2015-10-27 04:16:59

标签: javascript jquery json

我有一个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块之外设置了一个已定义的变量,但我似乎无法使这些变量发挥作用。

1 个答案:

答案 0 :(得分:0)

尝试使用.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)
    })
  });
});