ajax and json

39
AJAX CRIA Webtechnology Thursday, March 18, 2010

Upload: rody-middelkoop

Post on 15-Jan-2015

1.340 views

Category:

Technology


1 download

DESCRIPTION

Slides used for the course WebTechnology, part of CRIA.

TRANSCRIPT

Page 1: Ajax And JSON

AJAXCRIA Webtechnology

Thursday, March 18, 2010

Page 2: Ajax And JSON

CRIA-WT - Rody Middelkoop

Some applications of AJAX

Validation Dynamic listboxes Autorefresh Excessive tooltips Calling webservices

2

Thursday, March 18, 2010

Page 3: Ajax And JSON

CRIA-WT - Rody Middelkoop

AJAX

Asynchronous Javascript And XML

No DOM Standard, equals implementation in several browsers through the XMLHttpRequest

3

Thursday, March 18, 2010

Page 4: Ajax And JSON

CRIA-WT - Rody Middelkoop

XMLHttpRequest4

AJAX Enabled Web App.

event

function callback(){}

Webserver

Databaseserver

DB

ServerResourceXHR

2

Thursday, March 18, 2010

Page 5: Ajax And JSON

CRIA-WT - Rody Middelkoop

XMLHttpRequest4

AJAX Enabled Web App.

event

function callback(){}

Webserver

Databaseserver

DB

ServerResourceXHR

2

1

Thursday, March 18, 2010

Page 6: Ajax And JSON

CRIA-WT - Rody Middelkoop

XMLHttpRequest4

AJAX Enabled Web App.

event

function callback(){}

Webserver

Databaseserver

DB

ServerResourceXHR

2

1

3

Thursday, March 18, 2010

Page 7: Ajax And JSON

CRIA-WT - Rody Middelkoop

XMLHttpRequest4

AJAX Enabled Web App.

event

function callback(){}

Webserver

Databaseserver

DB

ServerResourceXHR

2

1

3

4

Thursday, March 18, 2010

Page 8: Ajax And JSON

CRIA-WT - Rody Middelkoop

XMLHttpRequest4

AJAX Enabled Web App.

event

function callback(){}

Webserver

Databaseserver

DB

ServerResourceXHR

2

1

3

5

4

Thursday, March 18, 2010

Page 9: Ajax And JSON

CRIA-WT - Rody Middelkoop

XMLHttpRequest4

AJAX Enabled Web App.

event

function callback(){}

Webserver

Databaseserver

DB

ServerResourceXHR

2 6

1

3

5

4

Thursday, March 18, 2010

Page 10: Ajax And JSON

CRIA-WT - Rody Middelkoop

XMLHttpRequest5

HTML:<div id="emailSection"> <input id="email" type="text" onblur="new ValidationServiceRequestor().validateEmail();"/> <label>Emailadres</label></div>

JAVASCRIPT:var ValidationServiceRequestor = function(){ this.validateEmail = function(){ var emailaddress = document.getElementById("email"); var serviceProxy = new ValidationServiceProxy(this); serviceProxy.validateEmail(emailaddress); } this.setValid = function(isValid){ alert(isValid) }}

Thursday, March 18, 2010

Page 11: Ajax And JSON

CRIA-WT - Rody Middelkoop

XMLHttpRequest6

var ValidationServiceProxy = function(callbackObject){ this.validateEmail = function(emailaddress){ validateEmailRequest = getXmlHttpRequestObject(); if (validateEmailRequest.readyState == 4 || validateEmailRequest.readyState == 0) { var params = "method=validateEmail&emailaddress=" + emailaddress.value; validateEmailRequest.open("GET", 'validationService.php?' + params, true); validateEmailRequest.onreadystatechange = validateEmailResponse; validateEmailRequest.send(null); } } validateEmailResponse = function(){ if (validateEmailRequest.readyState == 4) { var isEmailValid = eval("(" + validateEmailRequest.responseText + ")"); var isValid = (isEmailValid[0].emailaddressCount == 0) callbackObject.setValid(isValid) } } getXmlHttpRequestObject = function(){ if (window.XMLHttpRequest) { return new XMLHttpRequest(); } else { if (window.ActiveXObject) { return new ActiveXObject("Microsoft.XMLHTTP"); } } }}

Thursday, March 18, 2010

Page 12: Ajax And JSON

CRIA-WT - Rody Middelkoop

XMLHttpRequest - Callback7

function callback() { if (xmlHttp.readyState == 4) { if (xmlHttp.status == 200) { //do something interesting here } }}

Thursday, March 18, 2010

Page 13: Ajax And JSON

CRIA-WT - Rody Middelkoop

XMLHttpRequest

You aren't allowed to make XMLHttpRequests to any server except the server where your web page came from.

8

Thursday, March 18, 2010

Page 14: Ajax And JSON

CRIA-WT - Rody Middelkoop

XMLHttpRequest: Application Proxy9

AJAX Enabled Web App.

event

function callback(){}

Webserver: Application Proxy

Webserverin other domain

ServerResourceXHR

2

WebService

Thursday, March 18, 2010

Page 15: Ajax And JSON

CRIA-WT - Rody Middelkoop

XMLHttpRequest: Application Proxy9

AJAX Enabled Web App.

event

function callback(){}

Webserver: Application Proxy

Webserverin other domain

ServerResourceXHR

2

1 WebService

Thursday, March 18, 2010

Page 16: Ajax And JSON

CRIA-WT - Rody Middelkoop

XMLHttpRequest: Application Proxy9

AJAX Enabled Web App.

event

function callback(){}

Webserver: Application Proxy

Webserverin other domain

ServerResourceXHR

2

1

3

WebService

Thursday, March 18, 2010

Page 17: Ajax And JSON

CRIA-WT - Rody Middelkoop

XMLHttpRequest: Application Proxy9

AJAX Enabled Web App.

event

function callback(){}

Webserver: Application Proxy

Webserverin other domain

ServerResourceXHR

2

1

3

4

WebService

Thursday, March 18, 2010

Page 18: Ajax And JSON

CRIA-WT - Rody Middelkoop

XMLHttpRequest: Application Proxy9

AJAX Enabled Web App.

event

function callback(){}

Webserver: Application Proxy

Webserverin other domain

ServerResourceXHR

2

1

3

5

4

WebService

Thursday, March 18, 2010

Page 19: Ajax And JSON

CRIA-WT - Rody Middelkoop

XMLHttpRequest: Application Proxy9

AJAX Enabled Web App.

event

function callback(){}

Webserver: Application Proxy

Webserverin other domain

ServerResourceXHR

2 6

1

3

5

4

WebService

Thursday, March 18, 2010

Page 20: Ajax And JSON

CRIA-WT - Rody Middelkoop

On Demand JavaScript10

Web App.

event

Webserver in other domain

ServerResource returns js<script>

</script>

2

WebService

http://ajaxpatterns.org/On-Demand_Javascript

Thursday, March 18, 2010

Page 21: Ajax And JSON

CRIA-WT - Rody Middelkoop

On Demand JavaScript10

Web App.

event

Webserver in other domain

ServerResource returns js<script>

</script>

2

1 WebService

http://ajaxpatterns.org/On-Demand_Javascript

Thursday, March 18, 2010

Page 22: Ajax And JSON

CRIA-WT - Rody Middelkoop

On Demand JavaScript10

Web App.

event

Webserver in other domain

ServerResource returns js<script>

</script>

2

1

3

WebService

http://ajaxpatterns.org/On-Demand_Javascript

Thursday, March 18, 2010

Page 23: Ajax And JSON

CRIA-WT - Rody Middelkoop

On Demand JavaScript10

Web App.

event

Webserver in other domain

ServerResource returns js<script>

</script>

2

1

3

4

WebService

http://ajaxpatterns.org/On-Demand_Javascript

Thursday, March 18, 2010

Page 24: Ajax And JSON

CRIA-WT - Rody Middelkoop

On Demand JavaScript10

Web App.

event

Webserver in other domain

ServerResource returns js<script>

</script>

2

1

3

5

4

WebService

http://ajaxpatterns.org/On-Demand_Javascript

Thursday, March 18, 2010

Page 25: Ajax And JSON

CRIA-WT - Rody Middelkoop

On Demand JavaScript10

Web App.

event

Webserver in other domain

ServerResource returns js<script>

</script>

2

1

3

5

4

WebService

http://ajaxpatterns.org/On-Demand_Javascript

<script id="external_script" type="text/JavaScript"></script><script> document.getElementById('external_script').src = 'http://cross.domain.com/other.js';</script>

Thursday, March 18, 2010

Page 26: Ajax And JSON

XML AND JSONThursday, March 18, 2010

Page 27: Ajax And JSON

CRIA-WT - Rody Middelkoop

XML vs JSON12

<employee><firstName>John</firstName><lastName>Doe</lastName><empNr>123</empNr><title>Accountant</title></employee>

var employee = {"firstName" : John, "lastName" : Doe, "empNr" : 123, "title" : "Accountant"

}

XML JSON

Thursday, March 18, 2010

Page 28: Ajax And JSON

CRIA-WT - Rody Middelkoop

JSON Is Not...

JSON is not a document format. JSON is not a markup language. JSON is not a general serialization format.

No recursive/recurring structures. No invisible structures. No functions.

13

Thursday, March 18, 2010

Page 29: Ajax And JSON

CRIA-WT - Rody Middelkoop

Object14

{

"name": "Jack B. Nimble",

"at large": true,

"grade": "A",

"format": {

"type": "rect",

"width": 1920,

"height": 1080,

"interlace": false,

"framerate": 24

}

}

Thursday, March 18, 2010

Page 30: Ajax And JSON

CRIA-WT - Rody Middelkoop

JSON in Ajax

XMLHttpRequest Obtain responseText Parse the responseText

responseData = eval( '(' + responseText + ')');

responseData = responseText.parseJSON();

15

Thursday, March 18, 2010

Page 31: Ajax And JSON

CRIA-WT - Rody Middelkoop

Security

Is it safe to use eval with XMLHttpRequest? The JSON data comes from the same server that

vended the page. An eval of the data is no less secure than the original html.

If in doubt, use string.parseJSON instead of eval.

16

Thursday, March 18, 2010

Page 32: Ajax And JSON

CRIA WT - Rody Middelkoop

element attribute attribute string content <![CDATA[ ]]> entities declarations schema stylesheets comments version namespace

JSON Is Not XML

objects arrays strings numbers booleans null

17

Thursday, March 18, 2010

Page 33: Ajax And JSON

CRIA-WT - Rody Middelkoop

Server-side JSON

<?php $emailaddresses = getDataFromDataSource("SELECT COUNT(*) AS emailaddressCount from adresboek where emailaddress = '" . $_REQUEST["emailaddress"] ."'"); $emailaddressesForJSON = array(); while( $row = mysql_fetch_array($emailaddresses)) { array_push($emailaddressesForJSON, $row); } $jsonText = json_encode( $emailaddressesForJSON ); echo $jsonText;

function getDataFromDataSource($query){ mysql_connect("127.0.0.1", "root", "root") or die("Connection Failure to Database"); mysql_select_db("criademo") or die ("Database criademo not found."); $result = mysql_query($query); return $result;}?>

18

Thursday, March 18, 2010

Page 34: Ajax And JSON

CRIA-WT - Rody Middelkoop

Who is responsible for the right format?

19

Web App.

event

Webserver

ClientWebService

Thursday, March 18, 2010

Page 35: Ajax And JSON

CRIA-WT - Rody Middelkoop

Who is responsible for the right format?

19

Web App.

event

Webserver

Client

1

WebService

Thursday, March 18, 2010

Page 36: Ajax And JSON

CRIA-WT - Rody Middelkoop

Who is responsible for the right format?

19

Web App.

event

Webserver

Client

1

2

WebService

Thursday, March 18, 2010

Page 37: Ajax And JSON

CRIA-WT - Rody Middelkoop

Who is responsible for the right format?

19

Web App.

event

Webserver

Client

1

2

3WebService

Thursday, March 18, 2010

Page 38: Ajax And JSON

CRIA-WT - Rody Middelkoop

Who is responsible for the right format?

19

Web App.

event

Webserver

Client

1

2

3WebService

1.SOAP: returns XML2.REST: let the client pick a format like XML, JSON, HTML

Thursday, March 18, 2010

Page 39: Ajax And JSON

CRIA-WT - Rody Middelkoop

Resources and a big thank you

JSON the x in AJAX, www.json.org/json.pdf

20

Thursday, March 18, 2010