AJAX محمد احمدی نیا [email protected]. 2 Of 27 What is AJAX? AJAX = Asynchronous...

27
AJAX ا ی ن مدی ح مد ا ح م[email protected] m

Transcript of AJAX محمد احمدی نیا [email protected]. 2 Of 27 What is AJAX? AJAX = Asynchronous...

Page 1: AJAX محمد احمدی نیا ahmadinia@gmail.com. 2 Of 27 What is AJAX?  AJAX = Asynchronous JavaScript and XML.  AJAX is not a new programming language, but.

AJAX

محمد احمدی نیا[email protected]

Page 2: AJAX محمد احمدی نیا ahmadinia@gmail.com. 2 Of 27 What is AJAX?  AJAX = Asynchronous JavaScript and XML.  AJAX is not a new programming language, but.

2 Of 27

What is AJAX?

AJAX = Asynchronous JavaScript and XML. AJAX is not a new programming language, but a

new way to use existing standards. AJAX is the art of exchanging data with a server, and

update parts of a web page - without reloading the whole page.

Examples of applications using AJAX: Google Suggest,Google Maps, Gmail, Youtube, and Facebook tabs.

زبانهای برنامه سازی وب

Page 3: AJAX محمد احمدی نیا ahmadinia@gmail.com. 2 Of 27 What is AJAX?  AJAX = Asynchronous JavaScript and XML.  AJAX is not a new programming language, but.

3 Of 27

What is AJAX?

AJAX is based on internet standards, and uses a combination of: XMLHttpRequest object (to exchange data

asynchronously with a server) JavaScript/DOM (to display/interact with the

information) CSS (to style the data) XML (often used as the format for transferring data)

زبانهای برنامه سازی وب

Page 4: AJAX محمد احمدی نیا ahmadinia@gmail.com. 2 Of 27 What is AJAX?  AJAX = Asynchronous JavaScript and XML.  AJAX is not a new programming language, but.

4 Of 27

How AJAX Works

زبانهای برنامه سازی وب

Page 5: AJAX محمد احمدی نیا ahmadinia@gmail.com. 2 Of 27 What is AJAX?  AJAX = Asynchronous JavaScript and XML.  AJAX is not a new programming language, but.

5 Of 27

AJAX Example

زبانهای برنامه سازی وب

<body><div id="myDiv"><h2>Let AJAX change this text</h2></div><button type="button" onclick="loadXMLDoc()">Change Content</button></body>

<head><script type="text/javascript">function loadXMLDoc() {.... AJAX script goes here ...}</script></head>

Page 6: AJAX محمد احمدی نیا ahmadinia@gmail.com. 2 Of 27 What is AJAX?  AJAX = Asynchronous JavaScript and XML.  AJAX is not a new programming language, but.

6 Of 27

XMLHttpRequest Object

The keystone of AJAX is the XMLHttpRequest object.

The XMLHttpRequest object is used to exchange data with a server behind the scenes.

All modern browsers support the XMLHttpRequest object (IE5 and IE6 use an ActiveXObject).

زبانهای برنامه سازی وب

Page 7: AJAX محمد احمدی نیا ahmadinia@gmail.com. 2 Of 27 What is AJAX?  AJAX = Asynchronous JavaScript and XML.  AJAX is not a new programming language, but.

7 Of 27

XMLHttpRequest Object

Create an XMLHttpRequest Object All modern browsers (IE7+, Firefox, Chrome, Safari,

and Opera) have a built-in XMLHttpRequest object. variable=new XMLHttpRequest();

Old versions of Internet Explorer (IE5 and IE6) uses an ActiveX Object: variable=new ActiveXObject("Microsoft.XMLHTTP");

زبانهای برنامه سازی وب

Page 8: AJAX محمد احمدی نیا ahmadinia@gmail.com. 2 Of 27 What is AJAX?  AJAX = Asynchronous JavaScript and XML.  AJAX is not a new programming language, but.

8 Of 27

XMLHttpRequest Object

زبانهای برنامه سازی وب

var xmlhttp;if (window.XMLHttpRequest)  {// code for IE7+, Firefox, Chrome, Opera, Safari  xmlhttp=new XMLHttpRequest();  }else  {// code for IE6, IE5  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");  }

Page 9: AJAX محمد احمدی نیا ahmadinia@gmail.com. 2 Of 27 What is AJAX?  AJAX = Asynchronous JavaScript and XML.  AJAX is not a new programming language, but.

9 Of 27

Send Request To Server

To send a request to a server, we use the open() and send() methods of the XMLHttpRequest object:

زبانهای برنامه سازی وب

Method Description

open(method,url,async)method: the type of request: GET or POSTurl: the location of the file on the serverasync: true (asynchronous) or false (synchronous)

send(string) Sends the request off to the server.string: Only used for POST requests

xmlhttp.open("GET","ajax_info.txt",true);xmlhttp.send();

Page 10: AJAX محمد احمدی نیا ahmadinia@gmail.com. 2 Of 27 What is AJAX?  AJAX = Asynchronous JavaScript and XML.  AJAX is not a new programming language, but.

10 Of 27

GET Requests

GET is simpler and faster than POST, and can be used in most cases.

add the information to the URL for sending

زبانهای برنامه سازی وب

xmlhttp.open("GET","demo_get.php? fname=Henry “,true);xmlhttp.send();

Page 11: AJAX محمد احمدی نیا ahmadinia@gmail.com. 2 Of 27 What is AJAX?  AJAX = Asynchronous JavaScript and XML.  AJAX is not a new programming language, but.

11 Of 27

POST Requests

always use POST requests when: A cached file is not an option (update a file or

database on the server) Sending a large amount of data to the server Sending user input (which can contain unknown

characters), POST is more robust and secure than GET

زبانهای برنامه سازی وب

Page 12: AJAX محمد احمدی نیا ahmadinia@gmail.com. 2 Of 27 What is AJAX?  AJAX = Asynchronous JavaScript and XML.  AJAX is not a new programming language, but.

12 Of 27

POST Requests

To POST data like an HTML form, add an HTTP header with setRequestHeader(). Specify the data you want to send in the send() method: setRequestHeader(header,value)

header: specifies the header namevalue: specifies the header value

زبانهای برنامه سازی وب

xmlhttp.open("POST","ajax_test.asp",true);xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");xmlhttp.send("fname=Henry&lname=Ford");

Page 13: AJAX محمد احمدی نیا ahmadinia@gmail.com. 2 Of 27 What is AJAX?  AJAX = Asynchronous JavaScript and XML.  AJAX is not a new programming language, but.

13 Of 27

Asynchronous - False

JavaScript will NOT continue to execute, until the server response is ready. If the server is busy or slow, the application will hang or stop.

Using async=false is not recommended, but for a few small requests this can be ok.

زبانهای برنامه سازی وب

xmlhttp.open("GET","ajax_info.txt",false);xmlhttp.send();document.getElementById("myDiv").innerHTML=xmlhttp.responseText;

Page 14: AJAX محمد احمدی نیا ahmadinia@gmail.com. 2 Of 27 What is AJAX?  AJAX = Asynchronous JavaScript and XML.  AJAX is not a new programming language, but.

14 Of 27

Asynchronous – True

AJAX stands for Asynchronous JavaScript and XML When using async=true, specify a function to execute when

the response is ready in the onreadystatechange event execute other scripts while waiting for server response

زبانهای برنامه سازی وب

xmlhttp.onreadystatechange=function()  {  if (xmlhttp.readyState==4 && xmlhttp.status==200)    {    document.getElementById("myDiv").innerHTML=xmlhttp.responseText;    }  }xmlhttp.open("GET","ajax_info.txt",true);xmlhttp.send();

Page 15: AJAX محمد احمدی نیا ahmadinia@gmail.com. 2 Of 27 What is AJAX?  AJAX = Asynchronous JavaScript and XML.  AJAX is not a new programming language, but.

15 Of 27

AJAX - Server Response

To get the response from a server, use the responseText or responseXML property of the XMLHttpRequest object.

The responseText Property

زبانهای برنامه سازی وب

Property Description

responseText get the response data as a string

responseXML get the response data as XML data

document.getElementById("myDiv").innerHTML=xmlhttp.responseText;

Page 16: AJAX محمد احمدی نیا ahmadinia@gmail.com. 2 Of 27 What is AJAX?  AJAX = Asynchronous JavaScript and XML.  AJAX is not a new programming language, but.

16 Of 27

AJAX – onreadystatechange

The onreadystatechange event is triggered every time the readyState changes.

The readyState property holds the status of the XMLHttpRequest.

زبانهای برنامه سازی وب

Page 17: AJAX محمد احمدی نیا ahmadinia@gmail.com. 2 Of 27 What is AJAX?  AJAX = Asynchronous JavaScript and XML.  AJAX is not a new programming language, but.

17 Of 27

AJAX – onreadystatechange

Three important properties of the XMLHttpRequest object:

زبانهای برنامه سازی وب

Property Description

onreadystatechangeStores a function (or the name of a function) to be called automatically each time the readyState property changes

readyState

Holds the status of the XMLHttpRequest. Changes from 0 to 4: 0: request not initialized 1: server connection established2: request received 3: processing request 4: request finished and response is ready

status200: "OK"404: Page not found

Page 18: AJAX محمد احمدی نیا ahmadinia@gmail.com. 2 Of 27 What is AJAX?  AJAX = Asynchronous JavaScript and XML.  AJAX is not a new programming language, but.

18 Of 27

AJAX – onreadystatechange

In the onreadystatechange event, we specify what will happen when the server response is ready to be processed.

When readyState is 4 and status is 200, the response is ready:

زبانهای برنامه سازی وب

xmlhttp.onreadystatechange=function()  {  if (xmlhttp.readyState==4 && xmlhttp.status==200)    {    document.getElementById("myDiv").innerHTML=xmlhttp.responseText;    }  }

Page 19: AJAX محمد احمدی نیا ahmadinia@gmail.com. 2 Of 27 What is AJAX?  AJAX = Asynchronous JavaScript and XML.  AJAX is not a new programming language, but.

19 Of 27

AJAX PHP Example

The following example will demonstrate how a web page can communicate with a web server while a user type characters in an input field:

زبانهای برنامه سازی وب

Page 20: AJAX محمد احمدی نیا ahmadinia@gmail.com. 2 Of 27 What is AJAX?  AJAX = Asynchronous JavaScript and XML.  AJAX is not a new programming language, but.

20 Of 27

AJAX PHP Example

When a user types a character in the input field above, the function "showHint()" is executed. The function is triggered by the "onkeyup" event:

زبانهای برنامه سازی وب

<body>

<h3>Start typing a name in the input field below:</h3><form action=""> First name: <input type="text" id="txt1" onkeyup="showHint(this.value)" /></form><p>Suggestions: <span id="txtHint"></span></p>

</body></html>

Page 21: AJAX محمد احمدی نیا ahmadinia@gmail.com. 2 Of 27 What is AJAX?  AJAX = Asynchronous JavaScript and XML.  AJAX is not a new programming language, but.

21 Of 27

AJAX PHP Example

زبانهای برنامه سازی وب

function showHint(str) {var xmlhttp;if (str.length==0)   {   document.getElementById("txtHint").innerHTML="";  return;  }if (window.XMLHttpRequest)   {// code for IE7+, Firefox, Chrome, Opera  xmlhttp=new XMLHttpRequest();  }else   {// code for IE6, IE5  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");  }xmlhttp.onreadystatechange=function()  {  if (xmlhttp.readyState==4 && xmlhttp.status==200)     {    document.getElementById("txtHint").innerHTML=xmlhttp.responseText;    }  }xmlhttp.open("GET","gethint.php?q="+str,true);xmlhttp.send();}

Page 22: AJAX محمد احمدی نیا ahmadinia@gmail.com. 2 Of 27 What is AJAX?  AJAX = Asynchronous JavaScript and XML.  AJAX is not a new programming language, but.

22 Of 27

AJAX PHP Example The PHP File

The source code in "gethint.php" checks an array of names, and returns the corresponding name(s) to the browser:

زبانهای برنامه سازی وب

<?php// Fill up array with names$a[]="Anna";$a[]="Brittany";$a[]="Cinderella";...$a[]="Ellen";$a[]="Wenche";$a[]="Vicky";//get the q parameter from URL$q=$_GET["q"]; …

Page 23: AJAX محمد احمدی نیا ahmadinia@gmail.com. 2 Of 27 What is AJAX?  AJAX = Asynchronous JavaScript and XML.  AJAX is not a new programming language, but.

23 Of 27 زبانهای برنامه سازی وب

...//lookup all hints from array if length of q>0if (strlen($q) > 0)   {  $hint="";  for($i=0; $i<count($a); $i++)     {    if (strtolower($q)==strtolower(substr($a[$i],0,strlen($q))))       {      if ($hint=="")         {        $hint=$a[$i];        }      else        {        $hint=$hint." , ".$a[$i];        }      }    }  }// Set output to "no suggestion" if no hint were found or to the correct valuesif ($hint == "")   {  $response="no suggestion";  }else   {  $response=$hint;  }//output the responseecho $response;?>

Page 24: AJAX محمد احمدی نیا ahmadinia@gmail.com. 2 Of 27 What is AJAX?  AJAX = Asynchronous JavaScript and XML.  AJAX is not a new programming language, but.

24 Of 27

AJAX Database Example

The following example will demonstrate how a web page can fetch information from a database with AJAX:

زبانهای برنامه سازی وب

Page 25: AJAX محمد احمدی نیا ahmadinia@gmail.com. 2 Of 27 What is AJAX?  AJAX = Asynchronous JavaScript and XML.  AJAX is not a new programming language, but.

25 Of 27

The HTML Page

زبانهای برنامه سازی وب

<html><head><script type="text/javascript">function showUser(str) {if (str=="")   {  document.getElementById("txtHint").innerHTML="";  return;  } if (window.XMLHttpRequest)   {// code for IE7+, Firefox, Chrome, Opera, Safari  xmlhttp=new XMLHttpRequest();  }else   {// code for IE6, IE5  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");  }xmlhttp.onreadystatechange=function()  {  if (xmlhttp.readyState==4 && xmlhttp.status==200)     {    document.getElementById("txtHint").innerHTML=xmlhttp.responseText;    }  }xmlhttp.open("GET","getuser.php?q="+str,true);xmlhttp.send();}…

Page 26: AJAX محمد احمدی نیا ahmadinia@gmail.com. 2 Of 27 What is AJAX?  AJAX = Asynchronous JavaScript and XML.  AJAX is not a new programming language, but.

26 Of 27

The HTML Page

زبانهای برنامه سازی وب

…</script></head><body>

<form><select name="users" onchange="showUser(this.value)"><option value="">Select a person:</option><option value="1">Peter Griffin</option><option value="2">Lois Griffin</option><option value="3">Glenn Quagmire</option><option value="4">Joseph Swanson</option></select></form><br /><div id="txtHint"><b>Person info will be listed here.</b></div>

</body></html>

Page 27: AJAX محمد احمدی نیا ahmadinia@gmail.com. 2 Of 27 What is AJAX?  AJAX = Asynchronous JavaScript and XML.  AJAX is not a new programming language, but.

27 Of 27

The PHP File(getuser.php)

زبانهای برنامه سازی وب

<?php$q=$_GET["q"];

$con = mysql_connect('localhost', 'peter', 'abc123');mysql_select_db("ajax_demo", $con);$sql="SELECT * FROM user WHERE id = '".$q."'";$result = mysql_query($sql);

echo "<table border='1'> <tr><th>Firstname</th><th>Lastname</th><th>Hometown</th><th>Job</th> </tr>";while($row = mysql_fetch_array($result))   {  echo "<tr>";  echo "<td>" . $row['FirstName'] . "</td>";  echo "<td>" . $row['LastName'] . "</td>";   echo "<td>" . $row['Hometown'] . "</td>";  echo "<td>" . $row['Job'] . "</td>";  echo "</tr>";  }echo "</table>";?>