javascript - 如果localStorage中存在数据,如何返回它,或者执行AJAX请求?

标签 javascript jquery ajax

抱歉措辞不当。这是代码

getJSON : function(url) {

    if ( localStorage.getItem(url) ) {

      console.log('Getting from localStorage instead');

      return $.parseJSON(localStorage.getItem(url));

    } else {
      console.log('No results locally, making XHR request...');

      return $.ajax({
        url: 'curl.php',
        type: 'GET',
        data: {
          url   : url
        }
      }).done(function (result) {
        var json = $.parseJSON(result);

        console.log('Setting to localStorage with key:', url);
        localStorage.setItem(url, result);
      })
    }
}

获取数据的两种方式:

如果它在 localStorage 中,则此方法有效:

console.log(this.getJSON(url))

如果不是,并且返回 AJAX 对象:

this.getJSON(url).done(function (result) {
  console.log(result);
})

如何重新格式化,以便我可以获取数据而不用预期它是否在 localStorage 中?

最佳答案

您可以向 getJSON 方法添加回调参数,如下所示:

this.getJSON = function(callback)
{

if ( localStorage.getItem(url) ) {

  console.log('Getting from localStorage instead');
  // If it's in local storage execute callback immediately
  callback($.parseJSON(localStorage.getItem(url)));

} else {
  console.log('No results locally, making XHR request...');

  $.ajax({
    url: 'curl.php',
    type: 'GET',
    data: {
      url   : url
    }
  }).done(function (result) {
    var json = $.parseJSON(result);

    console.log('Setting to localStorage with key:', url);
    localStorage.setItem(url, result);
    callback(json);
  });
}

}

然后你可以打电话

getJSON(function(json) {
  // Do something with json
});

关于javascript - 如果localStorage中存在数据,如何返回它,或者执行AJAX请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25026091/

相关文章:

java - 使用jquery加密用户密码并使用Clojure解密

jquery - 如何从具有相同类的唯一 div 获取文本值

javascript - 使用ajax通过jquery调用php函数

java - 在 Java 代理中访问 POST 数据

javascript - Webpack 和 svg-inline-loader 不起作用

javascript - 与$ ajax一起使用的Asp.Net显示默认错误页面

javascript - scrollreveal.min.js 错误,仅在网站的索引页面上

asp.net - 隐藏 HTML 编辑器工具栏中的按钮 (AjaxControlToolkit)

javascript - 使用javascript访问设备相机

javascript - 将数字减少到最接近的 3 的倍数