Giter Site home page Giter Site logo

samhamm / 06-ajax-and-json Goto Github PK

View Code? Open in Web Editor NEW

This project forked from codefellows-seattle-301d14/06-ajax-and-json

0.0 2.0 0.0 0 B

Help load our expanding blog set with asynchronous functionality!

HTML 43.03% JavaScript 35.26% CSS 21.71%

06-ajax-and-json's Introduction

CF Lab 06: AJAX and JSON

Build Status GitHub issues

Our blog has been growing! We now have over 200 posts that we need to load up.

It's time to move that data into a JSON file, and retrieve that file just when we need it with AJAX.

You should be familiar with the pair flow by now. If not, review previous instructions.

TODOs: MVP

  1. Start by looking over what's new in the codebase. There is a /data folder! There are some // DONE comments! Practice your code-reading skills.
  2. In index.html, after we load all our script tags, we need to kick off the retrieval of data, and rendering of the page. What's the right method to call?
  3. Fill in what's needed in article.js, so that all the articles are loaded and rendered, and retrieved with AJAX.
  4. Actually, we only need to request the JSON file when we don't already have it, so the conditional check should only do the ajax call when localStorage doesn't have the rawData yet.

Stretch Goals:

  1. Coded as above, we won't request a new JSON file if we've already downloaded it once. This cacheing is problematic: if the JSON file is updated (therefore our cache is "invalid"), a new copy won't be requested from the server unless localStorage is cleared. To overcome this, we could use a small and fast AJAX request with a method of HEAD, to request just the headers, and not the contents of the file. The HEAD response will contain a key called "eTag". The value of the eTag header is calculated based on the contents of the file. So if a new article is added (or an existing one is edited even slightly), the eTag will be different.
  • If we cache the eTag, then we can compare our cached version of it with a new eTag check, to determine if we need to get the whole file or not.
  • This can introduce some synchronicity issues, so we'll need to carefully control what methods are calling back to what.

Hint: You'll be able to see everything the server returns, if your AJAX success function looks something like this: function(data, message, xhr) { console.log(xhr); }

Now, go find those TODO items in the codebase, and tackle each one of them.

  1. Driver: Ensure you copy the starter code folder to a new folder named for your pair!
  2. Now cd into that new folder. This is where you will write code.
  3. Type atom . to open the new folder as a project in Atom.
  4. Use the Atom "Find in Project" feature to locate all the TODO items.
  5. Work through one or two TODO items, testing your code as you go, until you are happy with how it's working.

Switch roles

  1. Navigator: You can now clone the driver's fork, to your own local dev environment. Get set up as a collaborator, so you can pull and push changes.
  2. Handoff: The navigator now becomes the driver. The new driver now opens the code in Atom (see above), and has hands on the keyboard to work through the next one or two TODO items.

Submit your assignment

When you are finished with your work (or if time runs out), then submit your work. To do this, you'll create a PR to the upstream repo with your changes, and submit that PR link in Canvas.

See previous instructions, if you'd like to review the steps.

06-ajax-and-json's People

Contributors

patci avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.