So, I'm using AJAX to acquire a JSON file. I'm just trying to learn and understand how it works right now, but I'm planning on maybe using it in the future. So far, I'm actually able to acquire the file and parse it in JavaScript. What I'm unsure of is how to get the name of the menu item for the example I've created. Also, I've used JSONLint.com to check my JSON file, so I don't think it has something to do with that.
JSON
{
"Sunday": {
"name": "shrimp cocktail",
"price": "8.99"
},
"Monday": {
"name": "broasted chicken",
"price": "5.40"
},
"Tuesday": {
"name": "mexicano® tacos",
"price": "2.99"
},
"Wednesday": {
"name": "ruby's® champaign-cooked beef tacos",
"price": "3.99"
},
"Thursday": {
"name": "dc's green arrow super nachos",
"price": "9.99"
},
"Friday": {
"name": "jalapeno poppers",
"price": "5.99"
}
}
JAVASCRIPT
"use strict";
var xhttp, specialMenu, day;
function runWhenDone() {
switch (new Date().getDay()) {
case 0:
day = "Sunday";
break;
case 1:
day = "Monday";
break;
case 2:
day = "Tuesday";
break;
case 3:
day = "Wednesday";
break;
case 4:
day = "Thursday";
break;
case 5:
day = "Friday";
break;
case 6:
day = "Saturday";
break;
}
var c = document.createElement('p');
c.innerHTML = "Special: " + specialMenu.day.name;
document.body.appendChild(c);
}
if (window.XMLHttpRequest) {
xhttp = new window.XMLHttpRequest();
} else {
xhttp = new window.ActiveXObject("Microsoft.XMLHTTP");
}
xhttp.onreadystatechange = function () {
if (this.readyState === 4 && this.status === 200) {
specialMenu = JSON.parse(this.responseText);
runWhenDone();
}
};
xhttp.open('GET', 'specials-menu.json', true);
xhttp.send();
Code Snippet for Review
"use strict";
var specialMenu, day;
function runWhenDone() {
switch (new Date().getDay()) {
case 0:
day = "Sunday";
break;
case 1:
day = "Monday";
break;
case 2:
day = "Tuesday";
break;
case 3:
day = "Wednesday";
break;
case 4:
day = "Thursday";
break;
case 5:
day = "Friday";
break;
case 6:
day = "Saturday";
break;
}
var c = document.createElement('p');
c.innerHTML = "Special: " + specialMenu.day.name;
document.body.appendChild(c);
}
var specialMenu = JSON.parse('{"Sunday": {"name": "shrimp cocktail", "price": "8.99"}, "Monday": {"name": "broasted chicken", "price": "5.40"}, "Tuesday": {"name": "mexicano® tacos", "price": "2.99"}, "Wednesday": {"name": "ruby\'s® champaign-cooked beef tacos", "price": "3.99"}, "Thursday": { "name": "dc\'s green arrow super nachos", "price": "9.99"}, "Friday": {"name": "jalapeno poppers", "price": "5.99"}}');
runWhenDone();
I know it has something to do with specialMenu.day.name
, yet I don't understand why it's not working. When designing, I've referenced this W3Schools tutorial for some help. Click here.