jSON使用本地存储API获取请求

时间:2017-03-09 06:35:46

标签: jquery json ajax local-storage

我想知道是否有人可以为我目前遇到的这个问题提供一些帮助。我对此非常陌生,不幸的是,编写Headfirst编程的教科书并没有真正解释这一点。我研究了很多stackoverflows,但无济于事。任何正确方向的帮助将不胜感激。谢谢!

任务是显示食物菜单以及下面的项目列表。

  1. 应使用通过Ajax GETrequest检索的JSON文件中的数据生成。
  2. 生成包含所需菜单项的JSON文件。
  3. 您决定如何显示菜单项。即有序清单,无序清单等。
  4. 使用localStorge API
  5. 缓存JSON响应中的数据
  6. 确保在缓存数据后未进行GET请求。
  7. 在缓存数据时从localStorage检索数据
  8. 我认为这是正确的获取请求?我知道我错过了一些东西,但老实说,这是我的头脑。

    function getStarterMenu() {
        $.get(
            'data/startersMenu.json',
            function (data) {
                //Something goes here?
            },
            'json'
            );
    }
    

    我有一个名为startersMenu.json的外部json文件

    var startersMenu = {
    "starters": [
    {
    "name": "Jumbo Lump Crab Cake",
    "description": "Creole lobster sauce."
    },
    
    {
    "name": "Bacon Wrapped Sea Scallops",
    "description": "Chardonnay lemon sauce, Mango salsa."
    },
    {
    "name": "Chilled Maine Lobster Cocktail",
    "description": "Atomic cocktail sauce and lemon butter."
    },
    {
    "name": "Coconut Shrimp",
    "description": "three jumbo tiger shrimp, vanilla orange beurre blanc."
    },
    {
    "name": "Crispy Point Judith Calamari",
    "description": "Italian peppers and Bleu cheese Stuffed olives, Atomic cocktail sauce."
    },
    {
    "name": "Oysters on the Half Shell",
    "description": "shucked to order, mignonette and Atomic cocktail sauces."
    }
    
    ]
    
    }
    

2 个答案:

答案 0 :(得分:0)

在ajax调用成功响应之后,您需要编写代码来存储json数据。请注意,您需要在保存到本地存储之前对您获得的json进行字符串化。 pattern <- c("(Deleted) Semasio » DE: Intent » Christmas C", "(Old) AddThis - UK » Auto » General » Auto Enthusiasts", "(Old) AddThis - UK » Auto » General » Auto Intenders", "(Old) AddThis - UK » Financial » Social » Financial Shoppers", "(Old) AddThis - UK » Food » Social", "(Old) AddThis - UK » Financial » Social » Financial Shoppers", "(Old) AddThis - UK » Health » Social » Health Influencers") pattern <- data.frame(audiance=pattern) x <- read.csv(text='segment, subsegment Shopping, Financial shoppers Travel, Travel Europe Enthusiasts, Auto Enthusiasts Shopping, Christmas shopping', stringsAsFactors=FALSE) vagrep <- Vectorize(agrep, 'pattern', SIMPLIFY = TRUE) pattern$subsegment <- '' matches <- vagrep(x$subsegment, pattern$audiance) invisible(lapply(1:length(matches), function(i) if (length(matches[[i]] > 0)) pattern$subsegment[matches[[i]]] <<- x$subsegment[i])) pattern # audiance subsegment #1 (Deleted) Semasio » DE: Intent » Christmas C #2 (Old) AddThis - UK » Auto » General » Auto Enthusiasts Auto Enthusiasts #3 (Old) AddThis - UK » Auto » General » Auto Intenders #4 (Old) AddThis - UK » Financial » Social » Financial Shoppers Financial shoppers #5 (Old) AddThis - UK » Food » Social #6 (Old) AddThis - UK » Financial » Social » Financial Shoppers Financial shoppers #7 (Old) AddThis - UK » Health » Social » Health Influencers 然后,您可以在每次再次进行ajax调用之前检查本地存储。 SELECT id, label, textual1 FROM table WHERE ARRAY_CONTAINS(type ,'productType1') AND ARRAY_CONTAINS(feature ,'feature1') AND ( ( ARRAY_CONTAINS(feature ,'feature2') AND numeric1 > 3 ) or ( ARRAY_CONTAINS(feature ,'feature3') AND numeric2 > 4 ) ) ORDER BY label 如果有数据,则从本地存储中获取数据,否则调用服务器获取数据。

答案 1 :(得分:0)

for(var i=0; i<startersMenu.starters.length; i++){
localStorage.setItem('name_'+i, JSON.stringify(startersMenu.starters[i].name));

var nameString = localStorage.getItem("name_"+i);
console.log(nameString);
}

通过这种方式,您可以使用本地存储存储数据并轻松检索..

$.ajax({
            url: 'data/startersMenu.json',
            data: {

            },
            cache: false,            // you can set cache true or false here

         complete: function (jqXHR, textStatus) {
           // following statements 

        }
});

你选择的方法是更好的方法。你可以设置cache true或false来存储缓存..

使用这种方法是帮助你的更好方法..