AJAX
Should be called AJAJ
Objectives
- Define AJAX
- Deepen your understanding of asychronous
- Make an AJAX Request using jQuery
AJAX
Asynchronous
Actions happen when the data is returned, other JavaScript code can continue to execute while the we wait for a response.
JavaScript
The request comes from some JavaScript code not from a <script> tag, <link> tag, or anything else.
And XML
Originally all AJAX requests used XML as a communication format
Asynchronous
Server
Client
AJAX enables the Server and Client to communicate to each other "asynchronously". Asynchronous means that the client will wait for a response before trying to use the data.
AJAX Request
AJAX Response
1. Client creates a request.
2. Server responds to that request.
3. Client JavaScript handles that request.
XML, and "AJAJ"
<person>
<firstName>John</firstName>
<lastName>Smith</lastName>
<isAlive>true</isAlive>
<age>25</age>
<address>
<city>New York</city>
<state>NY</state>
</address>
<favoriteColors>
<color>Blue</color>
<color>Orange</color>
</favoriteColors>
</person>
{
"firstName": "John",
"lastName": "Smith",
"isAlive": true,
"age": 25,
"address": {
"city": "New York",
"state": "NY"
},
"favoriteColors": ["Blue", "Orange"]
}
XML and JSON are both formats for sending data. XML used to be popular, now JSON is much more popular. We're going to work with JSON even though people still call this AJAX
XML
JSON
JavaScript - Callbacks
Server
Client
AJAX Request
AJAX Response
// THIS CREATES THE REQUEST OBJECT
httpRequest = new XMLHttpRequest();
// THIS TELLS THE REQUEST WHERE TO GO
httpRequest.open('GET', 'http://www.google.com');
// THIS SENDS THE REQUEST!
httpRequest.send();
Making a Request
JavaScript - Callbacks
Server
Client
AJAX Request
AJAX Response
// THE SERVER IS HANDLING THE REQUEST -- NOTHING FOR US TO DO
Making a Request
JavaScript - Callbacks
Server
Client
AJAX Request
AJAX Response
// THIS CODE IS TRIGGERED WHEN THE HTTP REQUEST CHANGES STATE
// 4 means the request is "done".
// httpRequest.status < 400 means the request was "not an error".
httpRequest.onreadystatechange = function(){
// THIS HAPPENS ANY TIME THE REQUEST READY STATE CHANGES
if (httpRequest.readyState === 4) {
// THIS HAPPENS WHEN THE REQUEST IS "DONE"
if(httpRequest.status < 400) {
// THIS HAPPENS IF THE "DONE" REQUEST IS A SUCCESS
alert(httpRequest.responseText);
}
}
};
Making a Request
Vanilla JS
JQuery
httpRequest = new XMLHttpRequest();
httpRequest.onreadystatechange = function(){
if (httpRequest.readyState === 4) {
if(httpRequest.status < 400) {
alert(httpRequest.responseText);
}
}
};
httpRequest.open('GET', 'http://www.omdbapi.com/?t=Frozen&y=&plot=short&r=json');
httpRequest.send();
$.ajax({
url: 'https://www.omdbapi.com/?t=Frozen&y=&plot=short&r=json',
method: "GET",
success: function(data) {
alert(JSON.stringify(data));
}
});
Race Conditions
console.log("BEFORE THE AJAX")
$.ajax({
method: "GET",
url: "http://omdbapi.com/?i=tt1392190",
success: function(info) {
console.log("DONE")
console.log(info)
//write all my code that relies on the response data
},
error: function(err){
console.log("FAIL")
console.log(err)
}
});
console.log("AFTER THE AJAX!")
If an AJAX request is made the client continues processing code until the response is received.
What order will these console.log statements print?
Race Conditions
console.log("BEFORE THE AJAX")
$.ajax({
method: "GET",
url: "http://omdbapi.com/?i=tt1392190",
success: function(info) {
console.log("DONE")
console.log(info)
//write all my code that relies on the response data
},
error: function(err){
console.log("FAIL")
console.log(err)
}
});
console.log("AFTER THE AJAX!")
- "BEFORE AJAX"
- "AFTER AJAX"
- "DONE"/"FAIL"
- info/err
Promises
$.ajax({
method: "GET",
url: "http://omdbapi.com/?i=tt1392190"
})
.done(function(info) {
console.log("DONE")
console.log(info)
//write all my code that relies on the response data
})
.fail(function(err){
console.log("FAIL")
console.log(err)
});
Promises are an alternative to vanilla callbacks.
Objectives ... Review!
- Define AJAX
- Deepen your understanding of asychronous
- Make an AJAX Request using jQuery
Questions?
AJAXShould be called AJAJ
By Tyler Bettilyon
AJAXShould be called AJAJ
- 1,904