ISBN-10:
0132216353
ISBN-13:
9780132216357
Pub. Date:
08/25/2006
Publisher:
Prentice Hall
Understanding Ajax: Using Javascript to Create Rich Internet Applications

Understanding Ajax: Using Javascript to Create Rich Internet Applications

by Joshua Eichorn
Current price is , Original price is $44.99. You

Temporarily Out of Stock Online

Please check back later for updated availability.

Overview

AJAX: fast mastery for experienced Web developers!

Already an experienced Web developer? Apply your skills in today’s fastest-growing area of Web development: AJAX!

Building on what you already know, this fast-paced guide will show you exactly how to create rich, usable Internet applications. Joshua Eichorn teaches through sophisticated code examples, including extensive server-side PHP code.

You won’t just learn how to code AJAX applications: Eichorn covers the entire development lifecycle, from use cases and design through debugging. He also presents detailed application case studies, including a start-to-finish update of a non-AJAX application that addresses everything from feature improvements to changing usage patterns. Coverage includes:

· How AJAX changes the conventional Web development cycle

· Problems created by the AJAX paradigm -- and how to avoid them

· Adding AJAX to existing Web applications: key considerations

· Using core AJAX technologies, including the XMLHttpRequest object

· Consuming data returned to an AJAX application using both XSLT and JSON

· Building more usable AJAX applications: guidelines and downloadable resources

· Use cases: solving real-world problems in the AJAX environment

· Libraries and toolkits for simplifying AJAX development, including Sarissa, scriptaculous, and HTML_AJAX

· A complete guide to AJAX debugging

· Supporting browsers without XMLHttpRequest by using IFrames or cookies

· JSON data encoding debugging guide, which covers tools for Firefox and Internet Explorer

· A list of libraries, which includes PHP, .NET, Java, and other libraries that can be used with any server language

Product Details

ISBN-13: 9780132216357
Publisher: Prentice Hall
Publication date: 08/25/2006
Series: Prentice Hall Open Source Software Development Series
Pages: 384
Sales rank: 816,043
Product dimensions: 6.90(w) x 9.10(h) x 0.90(d)

About the Author

Joshua Eichorn, senior architect for Uversa, has developed custom solutions that have incorporated AJAX concepts since before the term “AJAX” was coined. He has more than six years’ experience with Open Source projects, and created phpDocumentor, the #1 PHP documentation solution. He is currently lead maintainer of the HTML_AJAX PHP PEAR library, and helps to run the Phoenix, Arizona PHP Users Group. His blog, There and Back Again (blog.joshuaeichorn.com) , focuses on AJAX and PHP innovations.

Read an Excerpt

PrefaceAudience

This book is intended for Web developers who understand how to build Web applications and have a basic understanding of JavaScript. JavaScript knowledge should include the ability to do Document Object Model (DOM) manipulation and the ability to use object-oriented libraries. Basic understanding of PHP is also helpful for understanding many of the examples in the book, but it isn't required because this book focuses on client-side JavaScript programming. Understanding the stateless nature of HTTP and how tools (such as cookies) can be used to work around this stateless nature is also useful.

As I wrote this book, I assumed that you had knowledge of Hypertext Markup Language (HTML) and Cascading Style Sheets (CSS). If you are a Web developer who has used JavaScript before, you should be able to use what you've learned from this book to add Asynchronous JavaScript and

What You Will Learn

This book focuses on using AJAX to create a new style of Web applications. It covers the following topics:

  • Ways to perform AJAX communications

  • AJAX communications models, both Remote Procedure Call (RPC) and document-centric

  • Usability guidelines and tips

  • How to choose an AJAX library

  • Ways to measure improvements in task completion speeds

  • How to add AJAX to an existing application

  • How to build rich applications

  • How to debug AJAX applications

  • The Sarissa Extensible Markup Language (

  • Scriptaculous effects and widgets

  • HTML_AJAX, which is an AJAX library with PHP support

The goal of this book is to add AJAX as a tool in your arsenal, not to cover every aspect of JavaScript and Web programming. To do this, we cover AJAX in a number of different ways, starting with basic implementation. We then move on to more theoretical topics, such as usability, and then finish by building actual applications.

Organization of the Book

This book is divided into two main parts and three appendixes. The first part, which encompasses Chapters 1–7, covers the basics of AJAX and how it fits into the rest of the Web development world. It includes introductions to the basic technology, facts about how to get the most out of AJAX, and tips regarding usability. Chapter 7 covers debugging, because bugs are bound to happen in any development environment, and AJAX affects how you implement many current Web-development debugging techniques.

The second part, which encompasses Chapters 8–12, contains three use cases. These use cases show how you can use AJAX to solve usability problems and improve performance on your current Web sites. The final use case also shows what is involved in building a JavaScript-powered application.

Finally, the appendixes summarize a large number of open source libraries. These include AJAX libraries and various JavaScript support libraries. I know that everyone requires different features from an AJAX library; these features range from specific server-side language support to DHTML features such as visual effects and drag-and-drop support. However, it's impossible for me to give detailed coverage of all the libraries, so I've chosen to focus only on those that I use on a regular basis. These libraries may not meet your needs, especially if you're using a server-side language other than PHP and you want complete server-side integration. To help with the process of picking a different library, the appendixes give you a starting point for picking a library to use if the ones covered in detail in this book don't meet your needs.

Web Browsers

Any book that includes JavaScript code needs to make some assumptions about the Web browsers that will be used. All examples shown in this book have been tested on Internet Explorer 6 and Firefox 1.5. The code should work in newer versions without much trouble, but it may have small problems with other browsers. This is especially true for older browsers such as Internet Explorer 4 or Netscape 4.7; in fact, none of the examples in this book would run on these browsers without a lot of changes. Browsers have advanced over time, and the vast majority of users have upgraded. If you need to support old browsers, do it with non-JavaScript versions of your application; supporting AJAX on ancient technology will make support a nightmare.

Why PHP?

The main focus of this book is on the client-side JavaScript code, but in many of the examples, server code is also shown to present the complete processes. PHP was chosen as the language for these examples because of its widespread use and my familiarity with it. The concepts shown on the server-side code should be easily transferable to any other language, although each language will have its own implementation details.

Summary of Chapters

The first part of the book builds a basic understanding of AJAX and shows how the technology works. It builds a foundation that will allow you to build complete applications. Specifically, it covers the following:

  • Chapter 1, "What Is AJAX?" provides an overview of AJAX, what it actually means, and where it came from.

  • Chapter 2, "Getting Started," is a guide to basic AJAX implementation covering AJAX communications powered by IFrames, and cookies.

  • Chapter 3, "Consuming the Sent Data," shows the various ways to use the data that you learned how to transmit between the client and server in Chapter 2. It includes both document-centric approaches (such as processing

  • Chapter 4, "Adding AJAX to Your Web Development Process," covers some of the ways that AJAX will change the development process and the ways in which you can deal with these changes. It also covers how to pick an AJAX library.

  • Chapter 5, "Getting the Most from AJAX," provides a mental framework for thinking about AJAX and deciding when to use it. The chapter also provides some basic tools for measuring the time it takes for a task to be completed.

  • Chapter 6, "Usability Guidelines," provides a set of usability guidelines for building AJAX applications.

  • Chapter 7, "AJAX Debugging Guide," covers the various debugging options, from logging techniques to handling JavaScript exceptions, and a number of useful tools. These include the Firebug Firefox extension and Fiddler, which is a debugging HTTP proxy.

The second part of this book introduces you to three AJAX libraries and then looks at use cases in which they are used. Specifically, it covers the following:

  • Chapter 8, "Libraries Used in Part II: Sarissa, Scriptaculous," provides an overview of the Sarissa and scriptaculous JavaScript libraries.

  • Chapter 9, "Libraries Used in Part II: HTML_AJAX," provides an overview of HTML_AJAX, which is a JavaScript and PHP AJAX library.

  • Chapter 10, "Speeding Up Data Display," builds a small application for browsing large amounts of data and dealing with a graph that is very slow to generate.

  • Chapter 11, "Adding an AJAX Login to a Blog" adds an AJAX login to a sample blog application, showing how an AJAX login could work and how it could be used to load additional information at the time it is needed.

  • Chapter 12, "Building a Trouble-Ticket System," builds a complete JavaScript-powered application. All the control and view logic is managed on the client side, and a set of services for interacting with the database is provided by the server.

Several appendixes cover various AJAX and JavaScript libraries that you might find useful while implementing your own AJAX application. Specifically, they cover the following:

  • Appendix A, "JavaScript AJAX Libraries," covers AJAX libraries that have only a JavaScript component.

  • Appendix B, "AJAX Libraries with Server Ties," details AJAX libraries that have a server-side component and a JavaScript component; the list is organized by server language.

  • Appendix C, "JavaScript DHTML Libraries," gives information about JavaScript libraries that is useful for adding rich, JavaScript elements to your Web applications.

Typographical Conventions

Typographic conventions are used throughout this book to convey information. Italic font is used for emphasis and for citations of others' work. Code-based items are shown like this and include variable names, function and class names, and filenames.

Where to Get Examples Used in This book

The example programs used in this book can be found at http://understandingajax.net.

© Copyright Pearson Education. All rights reserved.

Table of Contents

Understanding AJAX:

Using JavaScript to Create Rich Internet Applications

Joshua Eichorn

0132216353

PART I

Chapter 1 What Is AJAX?

1.1 Rich Internet Applications

1.2 AJAX Defined

1.3 Technologies of AJAX

1.4 Remote Scripting

1.5 Gmail Brings XMLHttpRequest into the Mainstream

1.6 New Name: AJAX

1.7 Summary

Chapter 2 Getting Started

2.1 XMLHttpRequest Overview

2.1.1 XMLHttpRequest::Open()

2.1.2 XMLHttpRequest::Send()

2.1.3 XMLHttpRequest::setRequestHeader()

2.1.4 XMLHttpRequest::getResponseHeader() and getAllResponseHeaders()

2.1.5 Other XMLHttpRequest Methods

2.1.6 XMLHttpRequest Properties

2.1.7 readyState Reference

2.2 Cross-Browser XMLHttpRequest

2.3 Sending Asynchronous Requests

2.4 AJAX Without XMLHttpRequest

2.5 Fallback Option 1: Sending a Request Using an IFrame

2.5.1 Creating a Hidden IFrame

2.5.2 Creating a Form

2.5.3 Send Data from the Loaded Content to the Original Document

2.5.4 Complete Iframe AJAX Example

2.6 Fallback Option 2: Sending a Request Using a Cookie

2.7 Summary

Chapter 3 Consuming the Sent Data

3.1 Document-Centric Approaches

3.1.1 Adding New HTML Content to a Page with AJAX

3.1.2 Consuming XML Using DOM

3.1.3 Consuming XML Using XSLT

3.2 Remote Scripting

3.2.1 Basic RPC

3.2.2 SOAP and XML-RPC

3.2.3 Custom XML

3.2.4 JavaScript and JSON

3.3 How to Decide on a Request Type

3.4 Summary

Chapter 4 Adding AJAX to Your Web Development Process

4.1 Changes to the Development

4.1.1 Enhancement-Driven Changes

4.1.2 AJAX in Action: Removing a Popup User Search

4.1.3 Changes Caused by Creating an AJAX-Driven Application

4.2 Integrating AJAX into a Framework

4.3 JavaScript as a Primary Development Language

4.4 Problems Created by the New Development Paradigm

4.5 Advantages to Using a Library

4.6 Reasons to Build Your Own Library

4.7 How Open Source Fits into the Mix

4.7.1 Evaluating an Open Source Library

4.7.2 Open Source Libraries in Relation to Commercial Libraries

4.8 Use Case for Building: The Firefox Counter

4.9 Use Case for Downloading: An Intranet Web Site

4.10 Summary

Chapter 5 Getting the Most from AJAX

5.1 Goals of AJAX

5.1.1 Increasing Interactivity

5.1.2 Decreasing the Time Required to Perform Actions

5.1.3 Reducing Bandwidth Use

5.1.4 Creating Rich Applications

5.2 Measuring Improvements

5.3 Promises and Problems of Combining AJAX with Other New Technologies

5.3.1 Combining AJAX with Flash

5.3.2 Scalable Vector Graphics (SVG)

5.3.3 XML User Interface Languages

5.4 Summary

Chapter 6 Usability Guidelines

6.1 Defining Usability

6.2 Usability Guidelines

6.2.1 Keep the User’s Expectations in Mind

6.2.2 Provide Feedback to Actions

6.2.3 Maintain the User’s Focus When Adding Content

6.2.4 Keep the Ability to Undo Actions

6.2.5 Know If You Are Developing an Application or a Web Site

6.2.6 Only Use AJAX Where It Has the Greatest Effect

6.2.7 Have a Plan for Those Users Without XMLHttpRequest

6.3 Common Usability Problems

6.3.1 Stealing Focus with Validation Messages

6.3.2 Preventing Undo with Autosave

6.3.3 Updating Sections of a Page Withoutthe User Realizing It

6.3.4 Breaking Bookmarking by Using AJAX to Load Entire Pages

6.3.5 Making AJAX Required on a Web Store

6.4 Summary

Chapter 7 AJAX Debugging Guide

7.1 Two Sides to Debugging

7.2 Looking at AJAX Communications

7.2.1 Building an AJAX Logger

7.2.2 Using the Logger

7.2.3 Firebug: A Firefox Debugging Extension

7.2.4 Fiddler

7.2.5 General Debugging Scenarios

7.3 JavaScript Debugging Tools

7.4 JavaScript Exceptions

7.5 Dumping Variables

7.6 Summary

PART II

Chapter 8 Libraries Used in Part II: Sarissa, Scriptaculous

8.1 Overview of the Use Cases

8.2 Libraries Used in Part II of This Book

8.3 Sarissa

8.3.1 Installation

8.3.2 Making an AJAX Request

8.3.3 Basic XML Features

8.3.4 Working with DOM Documents

8.3.5 Using XPath to Find Nodes in a Document

8.3.6 Transforming XML with XSLT

8.3.7 Sarissa Development Tips

8.4 Scriptaculous

8.4.1 Installation

8.4.2 Visual Effects

8.4.3 Hide/Show Pairs

8.4.4 Drag-and-Drop

8.4.5 Sortables

8.4.6 Slider Control

8.4.7 Scriptaculous Development Tips

8.5 Summary

Chapter 9 Libraries Used in Part II: HTML_AJAX

9.1 HTML_AJAX

9.1.1 Installation

9.1.2 HTML_AJAX JavaScript API

9.1.3 Remote Stub AJAX

9.1.4 Using HTML_AJAX_Action

9.1.5 JavaScript Behaviors

9.1.6 JavaScript Utility Methods

9.1.7 PHP Utility Methods

9.1.8 HTML_AJAX Development Tips

9.2 Summary

Chapter 10 Speeding Up Data Display

10.1 Overview of the Sun Rise and Set Data Viewer

10.2 Building the Non-AJAX Version of the Sun Rise and Set Viewer

10.2.1 SunRiseSet Class

10.2.2 Graph.php

10.2.3 Standard.php

10.3 Problems with the Non-AJAX Viewer

10.4 Improving Viewing with AJAX

10.4.1 Viewer HTML Updated for AJAX

10.4.2 Viewer PHP Script Updated for AJAX

10.5 Summary

Chapter 11 Adding an AJAX Login to a Blog

11.1 Why Logins Work Well with AJAX

11.2 Building an AJAX Login

11.3 Extending the Login Form

11.4 Implementing the AJAX Comment Login System Using XML

11.5 Summary

Chapter 12 Building a Trouble-Ticket System

12.1 Trouble-Ticketing System

12.2 AJAX Reliance Scale

12.3 Creating the Back End

12.4 Exporting the Back End

12.5 Building the JavaScript Application

12.6 Login Component

12.7 User-Registration Component

12.8 Account-Editing Component

12.9 Ticket-Creation Component

12.10 Ticket-Editor Component

12.11 My-Tickets Component

12.12 Assign-Tickets Component

12.13 Security Considerations with AJAX Applications

12.14 Comparing Our AJAX-Driven Application against a Standard MVC Model

12.15 Summary

Appendix A JavaScript AJAX Libraries

AJAX Toolbox

Bajax

Dojo Toolkit

libXmlRequest

MochiKit

Rico

Simple AJAX Code-Kit (SACK)

ThyAPI

Qooxdoo

XHConn

Yahoo! User Interface Library

Appendix B AJAX Libraries with Server Ties

PHP

AjaxAC

HTML_AJAX

PAJAJ

TinyAjax

Xajax

XOAD

Java

AjaxTags

Direct Web Remoting (DWR)

Google Web Toolkit

ZK

C#/.NET

Ajax.NET

Anthem.NET

Atlas

MagicAJAX.NET

Multiple Languages

CPAINT

Rialto

SAJAX

Appendix C JavaScript DHTML Libraries

Accesskey Underlining Library (AUL)

Behaviour

cssQuery()

Dean Edwards IE7

DOM-Drag

JavaScript Shell

Lightbox JS

Moo.fx

Nifty Corners Cube

overLIB

Sorttable

Tooltip.js

WZ_jsgraphics

WZ_dragdrop

Preface

Preface

Audience

This book is intended for Web developers who understand how to build Web applications and have a basic understanding of JavaScript. JavaScript knowledge should include the ability to do Document Object Model (DOM) manipulation and the ability to use object-oriented libraries. Basic understanding of PHP is also helpful for understanding many of the examples in the book, but it isn't required because this book focuses on client-side JavaScript programming. Understanding the stateless nature of HTTP and how tools (such as cookies) can be used to work around this stateless nature is also useful.

As I wrote this book, I assumed that you had knowledge of Hypertext Markup Language (HTML) and Cascading Style Sheets (CSS). If you are a Web developer who has used JavaScript before, you should be able to use what you've learned from this book to add Asynchronous JavaScript and XML (AJAX) to your sites. If this is the first time you've looked at JavaScript, you will want to find an introductory reference source before delving into AJAX. I recommend the Mozilla developer Web site at http://developer.mozilla.org/en/docs/JavaScript. It contains a comprehensive JavaScript reference and an introduction to the language.

What You Will Learn

This book focuses on using AJAX to create a new style of Web applications. It covers the following topics:

  • Ways to perform AJAX communications

  • AJAX communications models, both Remote Procedure Call (RPC) and document-centric

  • Usability guidelines and tips

  • How to choose an AJAX library

  • Ways to measure improvements in task completion speeds

  • How to add AJAX to an existing application

  • How to build rich applications

  • How to debug AJAX applications

  • The Sarissa Extensible Markup Language (XML) AJAX library

  • Scriptaculous effects and widgets

  • HTML_AJAX, which is an AJAX library with PHP support

The goal of this book is to add AJAX as a tool in your arsenal, not to cover every aspect of JavaScript and Web programming. To do this, we cover AJAX in a number of different ways, starting with basic implementation. We then move on to more theoretical topics, such as usability, and then finish by building actual applications.

Organization of the Book

This book is divided into two main parts and three appendixes. The first part, which encompasses Chapters 1–7, covers the basics of AJAX and how it fits into the rest of the Web development world. It includes introductions to the basic technology (such as XMLHttpRequest), facts about how to get the most out of AJAX, and tips regarding usability. Chapter 7 covers debugging, because bugs are bound to happen in any development environment, and AJAX affects how you implement many current Web-development debugging techniques.

The second part, which encompasses Chapters 8–12, contains three use cases. These use cases show how you can use AJAX to solve usability problems and improve performance on your current Web sites. The final use case also shows what is involved in building a JavaScript-powered application.

Finally, the appendixes summarize a large number of open source libraries. These include AJAX libraries and various JavaScript support libraries. I know that everyone requires different features from an AJAX library; these features range from specific server-side language support to DHTML features such as visual effects and drag-and-drop support. However, it's impossible for me to give detailed coverage of all the libraries, so I've chosen to focus only on those that I use on a regular basis. These libraries may not meet your needs, especially if you're using a server-side language other than PHP and you want complete server-side integration. To help with the process of picking a different library, the appendixes give you a starting point for picking a library to use if the ones covered in detail in this book don't meet your needs.

Web Browsers

Any book that includes JavaScript code needs to make some assumptions about the Web browsers that will be used. All examples shown in this book have been tested on Internet Explorer 6 and Firefox 1.5. The code should work in newer versions without much trouble, but it may have small problems with other browsers. This is especially true for older browsers such as Internet Explorer 4 or Netscape 4.7; in fact, none of the examples in this book would run on these browsers without a lot of changes. Browsers have advanced over time, and the vast majority of users have upgraded. If you need to support old browsers, do it with non-JavaScript versions of your application; supporting AJAX on ancient technology will make support a nightmare.

Why PHP?

The main focus of this book is on the client-side JavaScript code, but in many of the examples, server code is also shown to present the complete processes. PHP was chosen as the language for these examples because of its widespread use and my familiarity with it. The concepts shown on the server-side code should be easily transferable to any other language, although each language will have its own implementation details.

Summary of Chapters

The first part of the book builds a basic understanding of AJAX and shows how the technology works. It builds a foundation that will allow you to build complete applications. Specifically, it covers the following:

  • Chapter 1, "What Is AJAX?" provides an overview of AJAX, what it actually means, and where it came from.

  • Chapter 2, "Getting Started," is a guide to basic AJAX implementation covering AJAX communications powered by XMLHttpRequest, IFrames, and cookies.

  • Chapter 3, "Consuming the Sent Data," shows the various ways to use the data that you learned how to transmit between the client and server in Chapter 2. It includes both document-centric approaches (such as processing XML and displaying HTML) and RPC approaches.

  • Chapter 4, "Adding AJAX to Your Web Development Process," covers some of the ways that AJAX will change the development process and the ways in which you can deal with these changes. It also covers how to pick an AJAX library.

  • Chapter 5, "Getting the Most from AJAX," provides a mental framework for thinking about AJAX and deciding when to use it. The chapter also provides some basic tools for measuring the time it takes for a task to be completed.

  • Chapter 6, "Usability Guidelines," provides a set of usability guidelines for building AJAX applications.

  • Chapter 7, "AJAX Debugging Guide," covers the various debugging options, from logging techniques to handling JavaScript exceptions, and a number of useful tools. These include the Firebug Firefox extension and Fiddler, which is a debugging HTTP proxy.

The second part of this book introduces you to three AJAX libraries and then looks at use cases in which they are used. Specifically, it covers the following:

  • Chapter 8, "Libraries Used in Part II: Sarissa, Scriptaculous," provides an overview of the Sarissa and scriptaculous JavaScript libraries.

  • Chapter 9, "Libraries Used in Part II: HTML_AJAX," provides an overview of HTML_AJAX, which is a JavaScript and PHP AJAX library.

  • Chapter 10, "Speeding Up Data Display," builds a small application for browsing large amounts of data and dealing with a graph that is very slow to generate.

  • Chapter 11, "Adding an AJAX Login to a Blog" adds an AJAX login to a sample blog application, showing how an AJAX login could work and how it could be used to load additional information at the time it is needed.

  • Chapter 12, "Building a Trouble-Ticket System," builds a complete JavaScript-powered application. All the control and view logic is managed on the client side, and a set of services for interacting with the database is provided by the server.

Several appendixes cover various AJAX and JavaScript libraries that you might find useful while implementing your own AJAX application. Specifically, they cover the following:

  • Appendix A, "JavaScript AJAX Libraries," covers AJAX libraries that have only a JavaScript component.

  • Appendix B, "AJAX Libraries with Server Ties," details AJAX libraries that have a server-side component and a JavaScript component; the list is organized by server language.

  • Appendix C, "JavaScript DHTML Libraries," gives information about JavaScript libraries that is useful for adding rich, JavaScript elements to your Web applications.

Typographical Conventions

Typographic conventions are used throughout this book to convey information. Italic font is used for emphasis and for citations of others' work. Code-based items are shown like this and include variable names, function and class names, and filenames.

Where to Get Examples Used in This book

The example programs used in this book can be found at http://understandingajax.net.

© Copyright Pearson Education. All rights reserved.

Customer Reviews

Most Helpful Customer Reviews

See All Customer Reviews