SlideShare a Scribd company logo
1 of 51
Download to read offline
AJAX Transport Layer

       Siarhei Barysiuk
s.barysiuk@sam-solutions.net
Our roadmap
AJAX... not just for toilet cleaning anymore


                • AJAX = Asynchronous JavaScript and XML

                • Ajax is set of technologies that allow web
                applications to provide rich interaction
                without whole page refreshing.
Ajax: Classic Web Application
                      1) Browser makes request to server
                      2) Server sends HTML/CSS response
Ajax: Ajax Web Application
                      1) Browser makes request to server
                      asynchronously
                      2) Server sends XML/JSON response
                      3) AJAX Engine processes response
XMLHttpRequest
XMLHttpRequest: Fetching data flow

                       1) User generates an event (e.g. button click)
                       2) System creates an XMLHttpRequest and
                       configures with request parameters.
                       3) The XMLHttpRequest object makes an
                       asynchronous request to the web server.
                       4) Web server returns XML(other) object
                       with data.
                       5) The XMLHttpRequest object receives the
                       XML data and calls a callback to process it.
XMLHttpRequest: XHR Interface
                        event listener                                     XHR State
   // event handler
 attribute EventListener onreadystatechange;

 // state
 const unsigned short UNSENT = 0;
 const unsigned short OPENED = 1;
 const unsigned short HEADERS_RECEIVED = 2;
                                                                               open
 const unsigned short LOADING = 3;
 const unsigned short DONE = 4;
                                                                               send
 readonly attribute unsigned short readyState;

                                                                               abort
 // request
 void open(in DOMString method, in DOMString url);
 void open(in DOMString method, in DOMString url, in boolean async);
 void open(in DOMString method, in DOMString url, in boolean async, in DOMString user);
 void open(in DOMString method, in DOMString url, in boolean async, in DOMString user, in DOMString password);
 void setRequestHeader(in DOMString header, in DOMString value);
 void send();
 void send(in DOMString data);
 void send(in Document data);
 void abort();

                                                                            Response
 // response

                                                                           (Text/XML)
 DOMString getAllResponseHeaders();
 DOMString getResponseHeader(in DOMString header);
 readonly attribute DOMString responseText;
 readonly attribute Document responseXML;
 readonly attribute unsigned short status;
 readonly attribute DOMString statusText;
XMLHttpRequest: How to get XHR
function getXHR() {
	 var request = null;
	
	 if (typeof XMLHttpRequest != 'undefined') {
	 	 request = new XMLHttpRequest();
	}
	 else {
	 	 try {
	 	 	 request = new ActiveXObject(quot;Msxml2.XMLHTTPquot;);
		}
	 	 catch (e) {
	 	 	 try {
	 	 	 	 request = new ActiveXObject(quot;Microsoft.XMLHTTPquot;);
			}
	 	 	 catch (e) {}
	 	 }	
	}
		
	 return request;
}
XMLHttpRequest: Using XHR
var READY_STATE_COMPLETE=4;

var request = getXHR();   1
	
                                                      2
request.onreadystatechange = function() {
	 if (request.readyState == READY_STATE_COMPLETE) {
	 	 //200 OK
	 	 if (request.status == 200) { 5.1
	 	 	 //process data
		}
	 	 //Some error
                         5.2
	 	 else {
	 	 	 //process error
		}
	}
};
request.open(method,url,true); 3
request.send(null); 4
XMLHttpRequest: An example
A classic example is linked drop-downs.



                               Regions    Cities
XMLHttpRequest: Supported methods
• GET
Requests a representation of the specified resource. By far the most common method used on the Web
today.
• POST
Submits data to be processed (e.g. from an HTML form) to the identified resource. The data is included in
the body of the request. This may result in the creation of a new resource or the updates of existing
resources or both.
• HEAD
Asks for the response identical to the one that would correspond to a GET request, but without the
response body. This is useful for retrieving meta-information written in response headers, without having
to transport the entire content.
• PUT
Uploads a representation of the specified resource.
• DELETE
Deletes the specified resource.
• OPTIONS
This method allows the client to determine the options and/or requirements associated with a resource.
XMLHttpRequest: GET method
var READY_STATE_COMPLETE=4;
                              1
var request = getXHR();
	
                                                      2
request.onreadystatechange = function() {
	 if (request.readyState == READY_STATE_COMPLETE) {
	 	 //200 OK
	 	 if (request.status == 200) {    5.1
	 	 	 //process data
		}
	 	 //Some error
	 	 else {                 5.2
	 	 	 //process error
                                                              is asynchronous?
		}
	}
};
request.open(quot;GETquot;, quot;/path?param1=value1&param2=value2quot;,true); 3

request.send(null);   4
XMLHttpRequest: POST method
var READY_STATE_COMPLETE=4;
                              1
var request = getXHR();
	
                                                      2
request.onreadystatechange = function() {
	 if (request.readyState == READY_STATE_COMPLETE) {
	 	 //200 OK
	 	 if (request.status == 200) {    5.1
	 	 	 //process data
		}
	 	 //Some error
	 	 else {                 5.2
	 	 	 //process error
                                  is asynchronous?
		}
	}
};
request.open(quot;POSTquot;, quot;/pathquot;,true);     3

request.send(quot;param1=value1&param2=value2quot;);   4
XMLHttpRequest: Features

• object available in IE/Mozilla/Opera/Safari
• synchronous and asynchronous requests
• POST and GET support
XMLHttpRequest: Pros and Cons

+ not limited to XML
+ asynchronous calls
+ can receive HTTP status codes/headers
+ supported GET and POST
- back button problems
- same-origin policy
XMLHttpRequest: Same-origin policy
The philosophy of the same origin policy is simple: the browser should
not trust content loaded from arbitrary websites.
The term quot;originquot; is defined using the domain name, protocol and port.

                       URL                     Outcome                     Reason

 http://www.example.com/dir2/other.html        Success            Same protocol and host

 http://www.example.com/dir/inner/other.html   Success            Same protocol and host

 http://www.example.com:81/dir2/other.html      Failure   Same protocol and host but different port

 https://www.example.com/dir2/other.html        Failure              Different protocol

 http://en.example.com/dir2/other.html          Failure                 Different host

 http://example.com/dir2/other.html             Failure                 Different host
Questions?
iframe transport
iframe transport: Fetching data flow

                         1) User generates an event (e.g. button click)
                         2) System creates a hidden IFrame and
                         configures with request parameters.
                         3) The IFrame element makes an request to
                         the web server.
                         4) Web server returns XML(other) object
                         with data.
                         5) The IFrame object receives the XML data
                         and fires a load event.
iframe transport: How to use

var iframe = document.createElement(quot;iframequot;); 1
iframe.width=quot;0quot;;
iframe.height=quot;0quot;;
...
iframe.onload = bind(this.callback, this); 2
...                                                          GET
iframe.src = this.url + quot;?quot; + this.getRequestString();   3
...
document.body.appendChild(this.iframe);	 4




       In order to use POST you need to
   {                                           }
       create <form> and fill it dynamically.
iframe transport: How to use

var iframe = document.createElement(quot;iframequot;); 1
iframe.width=quot;0quot;;
iframe.height=quot;0quot;;
...
iframe.onload = bind(this.callback, this); 2
...                                                          GET
iframe.src = this.url + quot;?quot; + this.getRequestString();   3
...
document.body.appendChild(this.iframe);	 4

<iframe>
	 <!-- ... -->
	 <script type=quot;text/javascriptquot;>
	 	 window.parent.someFunction(/*data here*/);
	 </script>
	 <!-- ... -->
</iframe>
iframe transport: An example
 Linked drop-downs example.



                               Regions   Cities
iframe transport: Pros and Cons
+ wide browser compatibility

- browser history
- iframe not supported by XHTML strict
- cross-domain policy
iframe transport: Cross-domain policy
...
iframe.src = this.url + quot;?quot; + this.getRequestString();
...
                                                          different than current
<iframe>
                                                         http://host:port/path
	 <!-- ... -->
	 <script type=quot;text/javascriptquot;>
	 	 window.parent.handleIframeResponse(/*data here*/);
	 </script>
	 <!-- ... -->
</iframe>
Questions?
img cookie transport
img cookie transport: What is cookie?
Technically, cookies are arbitrary pieces of data chosen by the Web server and
sent to the browser.
img cookie transport: Cookies limitations
Relevant count of maximum stored cookies per domain for the major browsers
are:
          Firefox 2

          Firefox 3

        Opera 9.30

               IE 6

               IE 7

                          Safari has no limit.
             Safari

                      0                     12.5   25.0   37.5   50.0


Cookies must be smaller than 4 kilobytes. Internet Explorer imposes a 4KB
total for all cookies stored in a given domain.
img cookie transport: Fetching data flow




 1) Create <img> with request URL and append it to body. Browser makes a
 request to the server.
 2) Server sets cookies and sends response to the client.
 3) Client checks cookies after some time interval.
img cookie transport: An example
...

var img = document.createElement(quot;imgquot;); 1
img.width = quot;0quot;;
img.heigth = quot;0quot;;
	
img.src = this.url + quot;?quot; + this.getRequestString(this.data); 2

...
document.body.appendChild(this.img); 3
...

setTimeout(bind(this.callback,this),this.interval); 4
img cookie transport: Pros and Cons
+ lightweight
+ really really extra wide compatibility

- limited data due to GET and cookie limits
Questions?
script transport
script transport: Fetching data flow




     1) Create <script> element with given src attribute. Browser makes
     request to the server.
     2) Server returns JSON data wrapped in function call.
     3) Client runs function in own context.
script transport: JSON? What is it?

    JSON (JavaScript Object Notation) is a lightweight data-interchange format.

• It is easy for humans to read and write.
• It is easy for machines to parse and generate.
• It is based on a subset of the JavaScript Programming Language.
• It is a text format that is completely language independent.
script transport: JSON? What is it?
{
	 {quot;menuquot;: {
  	 	 quot;idquot;: quot;filequot;,
   	
  	 	 quot;valuequot;: quot;Filequot;,
   	
 	 	 	 quot;popupquot;: {
     		 	 	      quot;menuitemquot;: [
       		 	 	 	                {quot;valuequot;: quot;Newquot;, quot;onclickquot;: quot;CreateNewDoc()quot;},
       		 	 	 	 	              {quot;valuequot;: quot;Openquot;, quot;onclickquot;: quot;OpenDoc()quot;},
       		 	 	 	 	 	             {quot;valuequot;: quot;Closequot;, quot;onclickquot;: quot;CloseDoc()quot;}
     		 	 	 	 	 	            ]
  		
   	            }
			         }
   }		 	
}
script transport: An example
del.icio.us mashup
script transport: Pros and Cons
+ exempt from Same Origin restriction
+ less overhead (headers, cookies)
- JSON only
- GET method only
script transport: JSONP extension
Pass a name of callback function as jsonp parameter.


http://somehost:port/path?jsonp=funcName&param1=value1


            jsonp + quot;(quot; + jsonResult + quot;);quot;
Questions?
comet
comet: Intro
Named after kitchen cleaning.
comet: What is it?

Fundamentally, [Comet applications] all use long-lived HTTP
connections to reduce the latency with which messages
are passed to the server.

In essence, they do not poll the server occasionally. Instead
the server has an open line of communication with which
it can push data to the client.
comet: Who’s using it?
comet: Classic Ajax Application
comet: Comet Application
comet: An example
Highly interactive applications like chats, real-time games, etc.
comet: Pros and Cons
+ low latency
+ event-based server push
- client 2 connection limit
- pragmatically requires custom server component
   Cometd
   LightStreamer
   ...
Questions?

More Related Content

What's hot

Python RESTful webservices with Python: Flask and Django solutions
Python RESTful webservices with Python: Flask and Django solutionsPython RESTful webservices with Python: Flask and Django solutions
Python RESTful webservices with Python: Flask and Django solutionsSolution4Future
 
Tornado Web Server Internals
Tornado Web Server InternalsTornado Web Server Internals
Tornado Web Server InternalsPraveen Gollakota
 
8 Minutes On Rack
8 Minutes On Rack8 Minutes On Rack
8 Minutes On Rackdanwrong
 
Tornado web
Tornado webTornado web
Tornado webkurtiss
 
Building a real life application in node js
Building a real life application in node jsBuilding a real life application in node js
Building a real life application in node jsfakedarren
 
Nginx + Tornado = 17k req/s
Nginx + Tornado = 17k req/sNginx + Tornado = 17k req/s
Nginx + Tornado = 17k req/smoret1979
 
Python, async web frameworks, and MongoDB
Python, async web frameworks, and MongoDBPython, async web frameworks, and MongoDB
Python, async web frameworks, and MongoDBemptysquare
 
Real time server
Real time serverReal time server
Real time serverthepian
 
Scalable web application architecture
Scalable web application architectureScalable web application architecture
Scalable web application architecturepostrational
 
An Introduction to Solr
An Introduction to SolrAn Introduction to Solr
An Introduction to Solrtomhill
 
Introduction to node.js
Introduction to node.jsIntroduction to node.js
Introduction to node.jsAdrien Guéret
 
jQuery Proven Performance Tips & Tricks
jQuery Proven Performance Tips & TricksjQuery Proven Performance Tips & Tricks
jQuery Proven Performance Tips & TricksAddy Osmani
 

What's hot (20)

Tornadoweb
TornadowebTornadoweb
Tornadoweb
 
Rack Middleware
Rack MiddlewareRack Middleware
Rack Middleware
 
Python RESTful webservices with Python: Flask and Django solutions
Python RESTful webservices with Python: Flask and Django solutionsPython RESTful webservices with Python: Flask and Django solutions
Python RESTful webservices with Python: Flask and Django solutions
 
WordPress and Ajax
WordPress and AjaxWordPress and Ajax
WordPress and Ajax
 
Web::Scraper
Web::ScraperWeb::Scraper
Web::Scraper
 
Flask – Python
Flask – PythonFlask – Python
Flask – Python
 
Tornado Web Server Internals
Tornado Web Server InternalsTornado Web Server Internals
Tornado Web Server Internals
 
8 Minutes On Rack
8 Minutes On Rack8 Minutes On Rack
8 Minutes On Rack
 
Tornado web
Tornado webTornado web
Tornado web
 
Building a real life application in node js
Building a real life application in node jsBuilding a real life application in node js
Building a real life application in node js
 
Nginx + Tornado = 17k req/s
Nginx + Tornado = 17k req/sNginx + Tornado = 17k req/s
Nginx + Tornado = 17k req/s
 
Python, async web frameworks, and MongoDB
Python, async web frameworks, and MongoDBPython, async web frameworks, and MongoDB
Python, async web frameworks, and MongoDB
 
Real time server
Real time serverReal time server
Real time server
 
Tornado in Depth
Tornado in DepthTornado in Depth
Tornado in Depth
 
Scalable web application architecture
Scalable web application architectureScalable web application architecture
Scalable web application architecture
 
An Introduction to Solr
An Introduction to SolrAn Introduction to Solr
An Introduction to Solr
 
Introduction to node.js
Introduction to node.jsIntroduction to node.js
Introduction to node.js
 
Rest api with Python
Rest api with PythonRest api with Python
Rest api with Python
 
jQuery Proven Performance Tips & Tricks
jQuery Proven Performance Tips & TricksjQuery Proven Performance Tips & Tricks
jQuery Proven Performance Tips & Tricks
 
JavaScript JQUERY AJAX
JavaScript JQUERY AJAXJavaScript JQUERY AJAX
JavaScript JQUERY AJAX
 

Viewers also liked

Ajax Performance Tuning and Best Practices
Ajax Performance Tuning and Best PracticesAjax Performance Tuning and Best Practices
Ajax Performance Tuning and Best PracticesDoris Chen
 
Server Side Events
Server Side EventsServer Side Events
Server Side Eventsthepilif
 
A Re-Introduction to Third-Party Scripting
A Re-Introduction to Third-Party ScriptingA Re-Introduction to Third-Party Scripting
A Re-Introduction to Third-Party Scriptingbenvinegar
 
Behind the scenes of Real-Time Notifications
Behind the scenes of Real-Time NotificationsBehind the scenes of Real-Time Notifications
Behind the scenes of Real-Time NotificationsGuillermo Mansilla
 
JavaScript and jQuery Fundamentals
JavaScript and jQuery FundamentalsJavaScript and jQuery Fundamentals
JavaScript and jQuery FundamentalsBG Java EE Course
 

Viewers also liked (7)

Ajax Performance Tuning and Best Practices
Ajax Performance Tuning and Best PracticesAjax Performance Tuning and Best Practices
Ajax Performance Tuning and Best Practices
 
Server Side Events
Server Side EventsServer Side Events
Server Side Events
 
A Re-Introduction to Third-Party Scripting
A Re-Introduction to Third-Party ScriptingA Re-Introduction to Third-Party Scripting
A Re-Introduction to Third-Party Scripting
 
Behind the scenes of Real-Time Notifications
Behind the scenes of Real-Time NotificationsBehind the scenes of Real-Time Notifications
Behind the scenes of Real-Time Notifications
 
Ajax
AjaxAjax
Ajax
 
JavaScript and jQuery Fundamentals
JavaScript and jQuery FundamentalsJavaScript and jQuery Fundamentals
JavaScript and jQuery Fundamentals
 
jQuery Ajax
jQuery AjaxjQuery Ajax
jQuery Ajax
 

Similar to AJAX Transport Layer (20)

AJAX.pptx
AJAX.pptxAJAX.pptx
AJAX.pptx
 
Ajax and xml
Ajax and xmlAjax and xml
Ajax and xml
 
AJAX
AJAXAJAX
AJAX
 
AJAX
AJAXAJAX
AJAX
 
AJAX
AJAXAJAX
AJAX
 
Ajax
AjaxAjax
Ajax
 
Unit-5.pptx
Unit-5.pptxUnit-5.pptx
Unit-5.pptx
 
Introduction to Ajax programming
Introduction to Ajax programmingIntroduction to Ajax programming
Introduction to Ajax programming
 
Ajax
AjaxAjax
Ajax
 
Ajax
AjaxAjax
Ajax
 
Ajax
AjaxAjax
Ajax
 
Ajax Technology
Ajax TechnologyAjax Technology
Ajax Technology
 
RIA and Ajax
RIA and AjaxRIA and Ajax
RIA and Ajax
 
Xml http request
Xml http requestXml http request
Xml http request
 
Core Java tutorial at Unit Nexus
Core Java tutorial at Unit NexusCore Java tutorial at Unit Nexus
Core Java tutorial at Unit Nexus
 
AJAX
AJAXAJAX
AJAX
 
Asynchronous JavaScript & XML (AJAX)
Asynchronous JavaScript & XML (AJAX)Asynchronous JavaScript & XML (AJAX)
Asynchronous JavaScript & XML (AJAX)
 
jQuery - Chapter 5 - Ajax
jQuery - Chapter 5 -  AjaxjQuery - Chapter 5 -  Ajax
jQuery - Chapter 5 - Ajax
 
Ajax
AjaxAjax
Ajax
 
Ajax
AjaxAjax
Ajax
 

Recently uploaded

MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...apidays
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelDeepika Singh
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfOverkill Security
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 

Recently uploaded (20)

MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 

AJAX Transport Layer

  • 1.
  • 2. AJAX Transport Layer Siarhei Barysiuk s.barysiuk@sam-solutions.net
  • 4. AJAX... not just for toilet cleaning anymore • AJAX = Asynchronous JavaScript and XML • Ajax is set of technologies that allow web applications to provide rich interaction without whole page refreshing.
  • 5. Ajax: Classic Web Application 1) Browser makes request to server 2) Server sends HTML/CSS response
  • 6. Ajax: Ajax Web Application 1) Browser makes request to server asynchronously 2) Server sends XML/JSON response 3) AJAX Engine processes response
  • 8. XMLHttpRequest: Fetching data flow 1) User generates an event (e.g. button click) 2) System creates an XMLHttpRequest and configures with request parameters. 3) The XMLHttpRequest object makes an asynchronous request to the web server. 4) Web server returns XML(other) object with data. 5) The XMLHttpRequest object receives the XML data and calls a callback to process it.
  • 9. XMLHttpRequest: XHR Interface event listener XHR State // event handler attribute EventListener onreadystatechange; // state const unsigned short UNSENT = 0; const unsigned short OPENED = 1; const unsigned short HEADERS_RECEIVED = 2; open const unsigned short LOADING = 3; const unsigned short DONE = 4; send readonly attribute unsigned short readyState; abort // request void open(in DOMString method, in DOMString url); void open(in DOMString method, in DOMString url, in boolean async); void open(in DOMString method, in DOMString url, in boolean async, in DOMString user); void open(in DOMString method, in DOMString url, in boolean async, in DOMString user, in DOMString password); void setRequestHeader(in DOMString header, in DOMString value); void send(); void send(in DOMString data); void send(in Document data); void abort(); Response // response (Text/XML) DOMString getAllResponseHeaders(); DOMString getResponseHeader(in DOMString header); readonly attribute DOMString responseText; readonly attribute Document responseXML; readonly attribute unsigned short status; readonly attribute DOMString statusText;
  • 10. XMLHttpRequest: How to get XHR function getXHR() { var request = null; if (typeof XMLHttpRequest != 'undefined') { request = new XMLHttpRequest(); } else { try { request = new ActiveXObject(quot;Msxml2.XMLHTTPquot;); } catch (e) { try { request = new ActiveXObject(quot;Microsoft.XMLHTTPquot;); } catch (e) {} } } return request; }
  • 11. XMLHttpRequest: Using XHR var READY_STATE_COMPLETE=4; var request = getXHR(); 1 2 request.onreadystatechange = function() { if (request.readyState == READY_STATE_COMPLETE) { //200 OK if (request.status == 200) { 5.1 //process data } //Some error 5.2 else { //process error } } }; request.open(method,url,true); 3 request.send(null); 4
  • 12. XMLHttpRequest: An example A classic example is linked drop-downs. Regions Cities
  • 13. XMLHttpRequest: Supported methods • GET Requests a representation of the specified resource. By far the most common method used on the Web today. • POST Submits data to be processed (e.g. from an HTML form) to the identified resource. The data is included in the body of the request. This may result in the creation of a new resource or the updates of existing resources or both. • HEAD Asks for the response identical to the one that would correspond to a GET request, but without the response body. This is useful for retrieving meta-information written in response headers, without having to transport the entire content. • PUT Uploads a representation of the specified resource. • DELETE Deletes the specified resource. • OPTIONS This method allows the client to determine the options and/or requirements associated with a resource.
  • 14. XMLHttpRequest: GET method var READY_STATE_COMPLETE=4; 1 var request = getXHR(); 2 request.onreadystatechange = function() { if (request.readyState == READY_STATE_COMPLETE) { //200 OK if (request.status == 200) { 5.1 //process data } //Some error else { 5.2 //process error is asynchronous? } } }; request.open(quot;GETquot;, quot;/path?param1=value1&param2=value2quot;,true); 3 request.send(null); 4
  • 15. XMLHttpRequest: POST method var READY_STATE_COMPLETE=4; 1 var request = getXHR(); 2 request.onreadystatechange = function() { if (request.readyState == READY_STATE_COMPLETE) { //200 OK if (request.status == 200) { 5.1 //process data } //Some error else { 5.2 //process error is asynchronous? } } }; request.open(quot;POSTquot;, quot;/pathquot;,true); 3 request.send(quot;param1=value1&param2=value2quot;); 4
  • 16. XMLHttpRequest: Features • object available in IE/Mozilla/Opera/Safari • synchronous and asynchronous requests • POST and GET support
  • 17. XMLHttpRequest: Pros and Cons + not limited to XML + asynchronous calls + can receive HTTP status codes/headers + supported GET and POST - back button problems - same-origin policy
  • 18. XMLHttpRequest: Same-origin policy The philosophy of the same origin policy is simple: the browser should not trust content loaded from arbitrary websites. The term quot;originquot; is defined using the domain name, protocol and port. URL Outcome Reason http://www.example.com/dir2/other.html Success Same protocol and host http://www.example.com/dir/inner/other.html Success Same protocol and host http://www.example.com:81/dir2/other.html Failure Same protocol and host but different port https://www.example.com/dir2/other.html Failure Different protocol http://en.example.com/dir2/other.html Failure Different host http://example.com/dir2/other.html Failure Different host
  • 21. iframe transport: Fetching data flow 1) User generates an event (e.g. button click) 2) System creates a hidden IFrame and configures with request parameters. 3) The IFrame element makes an request to the web server. 4) Web server returns XML(other) object with data. 5) The IFrame object receives the XML data and fires a load event.
  • 22. iframe transport: How to use var iframe = document.createElement(quot;iframequot;); 1 iframe.width=quot;0quot;; iframe.height=quot;0quot;; ... iframe.onload = bind(this.callback, this); 2 ... GET iframe.src = this.url + quot;?quot; + this.getRequestString(); 3 ... document.body.appendChild(this.iframe); 4 In order to use POST you need to { } create <form> and fill it dynamically.
  • 23. iframe transport: How to use var iframe = document.createElement(quot;iframequot;); 1 iframe.width=quot;0quot;; iframe.height=quot;0quot;; ... iframe.onload = bind(this.callback, this); 2 ... GET iframe.src = this.url + quot;?quot; + this.getRequestString(); 3 ... document.body.appendChild(this.iframe); 4 <iframe> <!-- ... --> <script type=quot;text/javascriptquot;> window.parent.someFunction(/*data here*/); </script> <!-- ... --> </iframe>
  • 24. iframe transport: An example Linked drop-downs example. Regions Cities
  • 25. iframe transport: Pros and Cons + wide browser compatibility - browser history - iframe not supported by XHTML strict - cross-domain policy
  • 26. iframe transport: Cross-domain policy ... iframe.src = this.url + quot;?quot; + this.getRequestString(); ... different than current <iframe> http://host:port/path <!-- ... --> <script type=quot;text/javascriptquot;> window.parent.handleIframeResponse(/*data here*/); </script> <!-- ... --> </iframe>
  • 29. img cookie transport: What is cookie? Technically, cookies are arbitrary pieces of data chosen by the Web server and sent to the browser.
  • 30. img cookie transport: Cookies limitations Relevant count of maximum stored cookies per domain for the major browsers are: Firefox 2 Firefox 3 Opera 9.30 IE 6 IE 7 Safari has no limit. Safari 0 12.5 25.0 37.5 50.0 Cookies must be smaller than 4 kilobytes. Internet Explorer imposes a 4KB total for all cookies stored in a given domain.
  • 31. img cookie transport: Fetching data flow 1) Create <img> with request URL and append it to body. Browser makes a request to the server. 2) Server sets cookies and sends response to the client. 3) Client checks cookies after some time interval.
  • 32. img cookie transport: An example ... var img = document.createElement(quot;imgquot;); 1 img.width = quot;0quot;; img.heigth = quot;0quot;; img.src = this.url + quot;?quot; + this.getRequestString(this.data); 2 ... document.body.appendChild(this.img); 3 ... setTimeout(bind(this.callback,this),this.interval); 4
  • 33. img cookie transport: Pros and Cons + lightweight + really really extra wide compatibility - limited data due to GET and cookie limits
  • 36. script transport: Fetching data flow 1) Create <script> element with given src attribute. Browser makes request to the server. 2) Server returns JSON data wrapped in function call. 3) Client runs function in own context.
  • 37. script transport: JSON? What is it? JSON (JavaScript Object Notation) is a lightweight data-interchange format. • It is easy for humans to read and write. • It is easy for machines to parse and generate. • It is based on a subset of the JavaScript Programming Language. • It is a text format that is completely language independent.
  • 38. script transport: JSON? What is it? { {quot;menuquot;: { quot;idquot;: quot;filequot;, quot;valuequot;: quot;Filequot;, quot;popupquot;: { quot;menuitemquot;: [ {quot;valuequot;: quot;Newquot;, quot;onclickquot;: quot;CreateNewDoc()quot;}, {quot;valuequot;: quot;Openquot;, quot;onclickquot;: quot;OpenDoc()quot;}, {quot;valuequot;: quot;Closequot;, quot;onclickquot;: quot;CloseDoc()quot;} ] } } } }
  • 39. script transport: An example del.icio.us mashup
  • 40. script transport: Pros and Cons + exempt from Same Origin restriction + less overhead (headers, cookies) - JSON only - GET method only
  • 41. script transport: JSONP extension Pass a name of callback function as jsonp parameter. http://somehost:port/path?jsonp=funcName&param1=value1 jsonp + quot;(quot; + jsonResult + quot;);quot;
  • 43. comet
  • 44. comet: Intro Named after kitchen cleaning.
  • 45. comet: What is it? Fundamentally, [Comet applications] all use long-lived HTTP connections to reduce the latency with which messages are passed to the server. In essence, they do not poll the server occasionally. Instead the server has an open line of communication with which it can push data to the client.
  • 47. comet: Classic Ajax Application
  • 49. comet: An example Highly interactive applications like chats, real-time games, etc.
  • 50. comet: Pros and Cons + low latency + event-based server push - client 2 connection limit - pragmatically requires custom server component Cometd LightStreamer ...