cookie
property of the document
objectcookie
property multiple times, it won't be overwrittencookie
property is read, all cokies for a site are returned as a string%%html
<!DOCTYPE>
<html>
<head>
</head>
<body>
<p id="cookieValue"></p>
<script>
document.cookie="course=433";
document.cookie="department=CMSC";
document.getElementById("cookieValue").innerHTML=
document.cookie
</script>
</body>
</html>
document.cookie = "name=value; attribute1=att_value1; attribute2=att_value2"
%%html
<!DOCTYPE>
<html>
<head>
</head>
<body>
<p id="cookieValue2"></p>
<script>
var expire = new Date('Wed, 31 Dec 2017 23:59:59 EST');
document.cookie="course=433; expires=2018-04-13T16:53:00.372Z"// + expire.toUTCString();
document.cookie="department=CMSC";
document.getElementById("cookieValue2").innerHTML=document.cookie
</script>
</body>
</html>
Storage
objects are members of the window
objectwindow
is the default object, so you will often see sessionStorage
rather than window.sessionStorage
sessionStorage
is cleared when a new page is navigated tolocalStorage
has no set expiration datesetItem(name,key)
getItem(name,key)
%%html
<!DOCTYPE>
<html>
<head>
</head>
<body>
<button id="store">Click Here to Store Things</button>
<p id="storageValue"></p>
<script>
document.getElementById("store").addEventListener('click',
function(){
window.sessionStorage.setItem('building',"Sherman");
window.localStorage.setItem('room','015')
});
document.getElementById('storageValue').innerHTML =
window.sessionStorage.getItem("building") + " " +
window.localStorage.getItem("room");
</script>
</body>
</html>
var theRequest = new XMLHttpRequest();
open
is used to set where the data is from and how to get itsend
is used to add parameters and send the request to the URL given in the open
parametertheRequest.open('METHOD','location',Asynchronous?)
theRequest.send(ParametersObject)
open
methodsent
is passed null%%html
<!DOCTYPE>
<html>
<head>
</head>
<body>
<input type="text" id="zip">
<button id="lookup">Lookup</button>
<p></p>
<script>
document.getElementById("lookup").addEventListener('click',
function(){
var request = new XMLHttpRequest();
var zip = document.getElementById('zip').value;
request.open('GET', './lookup.php?zip=' + zip);
request.send(null);
});
</script>
</body>
</html>
XMLHTTPRequest.send()
doesn't return anythingXHR
objectaddEventListner
, set the property onreadystatechange
onreadystatechange
actually fires multiple times during the request, but we only care about it when its done usuallyresponse.readyState
holds where in the process the request isresponse.status
holds the HTTP status of the request, it should be 200 if successfulresponse.responseText
holds the content returned from the server%%html
<!DOCTYPE>
<html>
<head>
</head>
<body>
<h3>Respose Object Stages</h3>
<p>Response State: <span id="state"></span><p>
<input type="text" id="zip">
<button id="open">Open</button>
<button id="lookup2">Lookup</button>
<p id="city"></p>
<script>
var request = new XMLHttpRequest();
request.onreadystatechange = function(){
document.getElementById("state").innerHTML = document.getElementById("state").innerHTML + " " + request.readyState;
};
document.getElementById("open").addEventListener('click',function(){
var zip = document.getElementById('zip').value;
request.open('GET', 'https://www.csee.umbc.edu/~bwilk1/lookup.php?zip=' + zip);
});
document.getElementById("lookup2").addEventListener('click',
function(){
request.send(null);
});
</script>
</body>
</html>
%%html
<!DOCTYPE>
<html>
<head>
</head>
<body>
<input type="text" id="zip3">
<button id="lookup3">Lookup</button>
<p id="city3"></p>
<script>
document.getElementById("lookup3").addEventListener('click',
function(){
var request = new XMLHttpRequest();
var zip = document.getElementById('zip3').value;
request.open('GET', 'https://www.csee.umbc.edu/~bwilk1/lookup.php?zip=' + zip);
request.onreadystatechange = function(){
if(request.readyState == 4){
if(request.status == 200){
var info = request.responseText.split(":");
document.getElementById("city3").innerHTML = info[0] + "," + info[1]
}
}
};
request.send(null);
});
</script>
</body>
</html>
%%html
<!DOCTYPE>
<html>
<head>
</head>
<body>
<input type="text" id="dex">
<button id="find">Who's That Pokemon?!</button>
<p id="results"></p>
<script>
document.getElementById('find').addEventListener('click', function(){
let dex = document.getElementById('dex').value;
let xhr = new XMLHttpRequest();
xhr.open('GET','https://pokeapi.co/api/v2/pokemon/' + dex);
xhr.onreadystatechange = function(){
if(xhr.readyState == 4){
if(xhr.status == 200)
{
document.getElementById('results').innerHTML = xhr.responseText;
}
}
};
xhr.send(null);
});
</script>
</body>
</html>
https://www.csee.umbc.edu/courses/undergraduate/433/spring18/lecture.php?lec=NUM
%%html
<!DOCTYPE>
<html>
<head>
</head>
<body>
<input type="text" id="number">
<button id="find2">Get Lecture</button>
<p id="title"></p>
<script>
document.getElementById("find2").addEventListener('click',function(){
let xhr = new XMLHttpRequest();
let lec = document.getElementById('number').value;
xhr.open('GET', 'https://www.csee.umbc.edu/courses/undergraduate/433/spring18/lecture.php?lec='
+ lec);
xhr.onreadystatechange = function(){
if(xhr.readyState ==4 && xhr.status == 200){
document.getElementById("title").innerHTML = xhr.responsetext
}
}
xhr.send();
})
</script>
</body>
</html>
send
%%html
<!DOCTYPE>
<html>
<head>
</head>
<body>
<input type="text" id="zip4">
<button id="lookup4">Lookup</button>
<p id="city4"></p>
<script>
document.getElementById("lookup4").addEventListener('click',
function(){
var request = new XMLHttpRequest();
var zip = document.getElementById('zip4').value;
request.open('POST', 'https://www.csee.umbc.edu/~bwilk1/lookup.php');
request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
request.onreadystatechange = function(){
if(request.readyState == 4){
if(request.status == 200){
var info = request.responseText.split(":");
document.getElementById("city4").innerHTML = info[0] + "," + info[1]
}
}
};
request.send("zip=" + zip);
});
</script>
</body>
</html>
https://geocode.xyz
to perform geoparsingscantext
parameter %%html
<!DOCTYPE>
<html>
<head>
</head>
<body>
<input type="text" id="geo">
<button id="geo_lookup">Lookup</button>
<p id="coded"></p>
<script>
document.getElementById("geo_lookup").addEventListener('click',
function(){
let geo =document.getElementById('geo').value;
let request = new XMLHttpRequest();
request.open('POST',"https://geocode.xyz");
request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
request.onreadystatechange = function(){
if(request.readyState ==4 && request.status == 200){
document.getElementById('coded').innerHTML = request.responseText;
}
};
request.send("json=1&scantext=" + geo);
});
</script>
</body>
</html>
locate
which should hold the IP%%html
<!DOCTYPE>
<html>
<head>
</head>
<body>
<input type="text" id="geo">
<button id="geo_lookup">Lookup</button>
<p id="coded"></p>
<script>
</script>
</body>
</html>
{
"my_key": 10,
"an_array":[1,2,3,4]
}
let apple = new Object();
apple.color = 'red';
apple['name'] = 'gala';
apple.sizes = [1 , 2, 1, .5];
let orange = new Array();
orange.push(1)
orange.push('2')
orange.push({pi: 3.14, e: 2.71});
[
1, '2', {
"pi" : 3.14,
"e" : 2.71
}
]
eval
eval
is a very bad idea and a major security riskJSON.parse
takes a JSON string, and returns the corrisponding JS objectJSON.stringify
takes a JS object and returns the corresponding JSON string%%script node
var today = new Date();
console.log(JSON.stringify(today))
console.log(JSON.parse(JSON.stringify(today)))
eval
, this can execute code from anywhereJSON.parse
Request
and Response
objects