Difference between revisions of "6CS028 Workshop - Ajax"

From mi-linux
Jump to navigationJump to search
Line 44: Line 44:
 
== Step 2 – Create the client-side script (JavaScript) ==
 
== Step 2 – Create the client-side script (JavaScript) ==
  
This file implements the client-side part of our Ajax transaction. It looks a bit complicated at first, but let’s break it down into its 3 main parts:
+
This file implements the client-side part of our Ajax transaction:
 
+
* It reads the name typed in the text box
* The initliveSearchReq() function creates the XMLHttpRequest object, which is the object we need to send the HTTP request to the server. As you can see this function is a bit messy, as this object is created differently depending on the browser. It seems to work on all browsers this way, but you might know simpler, tidier way?
+
* Checks that it is not blank
* The send_request() function is the one called by the JavaScrtipt event (see step 1). It creates the XMLHttpRequest object (by calling the function above), specifies which function should be run when the response comes back (DisplayResult in our case), and finally sends the request to the server. Note how it passes the text typed by the user as a parameter in the URL.
+
* Creates an Ajax object (this will only work if you have downloaded the Prototype library)
* The DisplayResult() function is called when the response comes back from the server. As you can see it simply inserts the response text in our div_result element.
+
* Creates a Request, passing our parameters, and defining what should happen when the response comes back:
  
 
<pre>
 
<pre>

Revision as of 16:55, 13 July 2011

Main Page >> Advanced Web Technologies >> Workbook >> Week 05

Today we are going to use Ajax to create a simple Live Search. There are 3 simple steps:

  1. Step 1 – Create the web page
  2. Step 2 – Create the client-side script (JavaScript)
  3. Step 3 – Create the server-side script (PHP)

Prototype JavaScript Framework

Let’s use the Prototype JavaScript Framework so we don't have to type too much JavaScript code :)

  • Download the Prototype JavaScript Framework
  • Upload it to your mi-linux account (in the same folder as your web pages)
  • Don't forget to set its permissions to "readable" and "writeable" by all.

Step 1 – Create the web page

First we obviously need to create our web page. Let’s keep it nice and simple:

<HTML>
  <HEAD>
    <TITLE>Test Ajax</TITLE>
    <SCRIPT type="text/javascript" src="prototype.js"></SCRIPT>
    <SCRIPT type="text/javascript" src="ajax.js"></SCRIPT>
  </HEAD>
  <BODY>
    <INPUT type="text" id="a_name">
    <INPUT type="button" value="Check name" onclick="send_request();">
    <DIV id="div_result"></DIV>
  </BODY>
</HTML>

In our head section:

  • A link to the Prototype JavaScript Framework (see previous section)
  • A link to our Ajax JavaScript code

On the page itself:

  • A simple text box
  • A button that will trigger the Ajax code (located in the file below)
  • A "div_result" element, in which the Ajax response will be displayed

Step 2 – Create the client-side script (JavaScript)

This file implements the client-side part of our Ajax transaction:

  • It reads the name typed in the text box
  • Checks that it is not blank
  • Creates an Ajax object (this will only work if you have downloaded the Prototype library)
  • Creates a Request, passing our parameters, and defining what should happen when the response comes back:
// ajax.js

function send_request()
{
  // Get user input
  name = document.getElementById("a_name").value;
  
  // Check if name was provided
  if(name!="")
  {
    // Create and execute Ajax request
    new Ajax.Request('ajax.php',
      {
        method:'get',
        parameters: {name: name},
        onSuccess: function(transport){
          var response = transport.responseText || "no response text";
          document.getElementById("div_result").innerHTML = response;
        },
        onFailure: function(){ alert('Something went wrong...') }
      });

  }
  else
  {
	  var  sh = document.getElementById("div_result");
	  sh.innerHTML = "Please enter value";    
  }
}

Step 3 – Create the server-side script (PHP)

Now all we need is the server-side part of our Ajax transaction. It’s a simple PHP file that reads the parameters passed in the URL, and then queries the database. I will let you implement the database access… this example features a “fake” database check (a simple if statement).

<?
  // ajax.php

  // Get value coming from request
  $name = $_GET['name'];

  // Connect to DB
  
  // Check if name exists in table
  
  if($name=="Alix")
    echo("This name is in the database");
  else
    echo("This name is NOT in the database :(");
  
  //Close connection

?>

All done

Your live search should now work…