this print for content only—size & color not accurate spine = 0.924" 488 page count BOOKS FOR PROFESSIONALS BY PROFESSIONALS ® Pro Ajax and the .NET 2.0 Platform Dear Reader, Thanks to the folks at Google, Ajax technology has become a force to be reckoned with. It is a technology that is here and now, just waiting for developers to implement it. Google Maps, Google Suggest, and Flickr are just a few of the sites out there that have moved Ajax into the mainstream. More will come as the technology becomes easier to implement. This book will examine not only Ajax technology, but also XmlHttpRequest processes, putting theory into code with samples that duplicate many of the technologies utilized by the aforementioned cutting-edge websites. Fortunately for C# developers, we have Ajax options right now in the form of some newly released class libraries that open the Ajax door to the .NET Framework. The majority of the code in this book centers on a third-party library called Anthem, written by Jason Diamond. One of the benefits of using this library is that you’ll also have backwards compatibility to Visual Studio 2003, as a majority of the code in this book will work with .NET 1.1 or 2.0. Having that range of opportunity makes Ajax development accessible to all. You’ll also get an introductory look at Microsoft’s Atlas and how it holds up against Ajax. You’ll have a chance to build an Atlas application as well and decide for yourself whether Atlas is the right fit for your development work. I’m confident that this book will help you get a firm grasp on the dynamic tools that are available now. You’ll be ready for next-generation web develop- ment in a surprisingly short amount of time. Dan Woolston US $49.99 Shelve in Web Development User level: Intermediate–Advanced Ajax and the .NET 2.0 Platform Woolston THE EXPERT’S VOICE ® IN WEB DEVELOPMENT Daniel Woolston Pro Ajax and the .NET 2.0 Platform CYAN MAGENTA YELLOW BLACK PANTONE 123 CV ISBN 1-59059-670-6 9 781590 596708 54999 6 89253 59670 8 Companion eBook Available www.apress.com SOURCE CODE ONLINE Companion eBook See last page for details on $10 eBook version forums.apress.com FOR PROFESSIONALS BY PROFESSIONALS ™ Join online discussions: THE APRESS ROADMAP Pro Ajax and the .NET 2.0 Platform Illustrated C# Foundations of Atlas: Rapid Ajax Development with ASP.NET 2.0 Foundations of Ajax Pro C# 2005 and the .NET 2.0 Platform, Third Edition Ajax Patterns and Best Practices Pro Daniel Woolston Pro Ajax and the .NET 2.0 Platform 6706fmfinal.qxd 6/20/06 3:40 PM Page i P ro Ajax and the .NET 2.0 Platform Copyright © 2006 by Daniel Woolston All rights reserved. No part of this work may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording, or by any information storage or retrieval system, without the prior written permission of the copyright owner and the publisher. ISBN-13 (pbk): 978-1-59059-670-8 ISBN-10 (pbk): 1-59059-670-6 Printed and bound in the United States of America 9 8 7 6 5 4 3 2 1 Trademarked names may appear in this book. Rather than use a trademark symbol with every occurrence of a trademarked name, we use the names only in an editorial fashion and to the benefit of the trademark owner, with no intention of infringement of the trademark. Lead Editor: Matthew Moodie Technical Reviewer: Nick McCollum Editorial Board: Steve Anglin, Ewan Buckingham, Gary Cornell, Jason Gilmore, Jonathan Gennick, Jonathan Hassell, James Huddleston, Chris Mills, Matthew Moodie, Dominic Shakeshaft, Jim Sumser, Keir Thomas, Matt Wade Project Manager: Julie M. Smith Copy Edit Manager: Nicole LeClerc Copy Editor: Ami Knox Assistant Production Director: Kari Brooks-Copony Senior Production Editor: Laura Cheu Compositor: Linda Weidemann, Wolf Creek Press Proofreader: April Eddy Indexer: Broccoli Information Management Artist: April Milne Cover Designer: Kurt Krames Manufacturing Director: Tom Debolski Distributed to the book trade worldwide by Springer-Verlag New York, Inc., 233 Spring Street, 6th Floor, New York, NY 10013. Phone 1-800-SPRINGER, fax 201-348-4505, e-mail orders-ny@springer-sbm.com, or visit http://www.springeronline.com. For information on translations, please contact Apress directly at 2560 Ninth Street, Suite 219, Berkeley, CA 94710. Phone 510-549-5930, fax 510-549-5939, e-mail info@apress.com, or visit http://www.apress.com. The information in this book is distributed on an “as is” basis, without warranty. Although every precaution has been taken in the preparation of this work, neither the author(s) nor Apress shall have any liability to any person or entity with respect to any loss or damage caused or alleged to be caused directly or indirectly by the information contained in this work. The source code for this book is available to readers at http://www.apress.com in the Source Code section. 6706fmfinal.qxd 6/20/06 3:40 PM Page ii For Terry and Cathy Woolston. This book is a testament to the perseverance and faith that you have had throughout the years. Thank you. 6706fmfinal.qxd 6/20/06 3:40 PM Page iii Contents at a Glance About the Author . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv About the Technical Reviewer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvi Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xix PART 1 ■ ■ ■ Ajax Concepts ■CHAPTER 1 History and Revival of Ajax. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 ■CHAPTER 2 Introducing JavaScript. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 ■CHAPTER 3 The XmlHttpRequest Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 ■CHAPTER 4 N-Tier and Ajax. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 PART 2 ■ ■ ■ Ajax Components ■CHAPTER 5 Rich Inter net Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 ■CHAPTER 6 CSS and the DOM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 ■CHAPTER 7 Ajax Frameworks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 PART 3 ■ ■ ■ Concept to Code ■CHAPTER 8 Understanding the Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 ■CHAPTER 9 Ajax and Web Services. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 ■CHAPTER 10 Tagging with Ajax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 ■CHAPTER 11 Cloning Google Suggest. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 ■CHAPTER 12 User Controls and Ajax.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257 ■CHAPTER 13 Ajax and Mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271 ■CHAPTER 14 Ajax and Web Parts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299 iv 6706fmfinal.qxd 6/20/06 3:40 PM Page iv PART 4 ■ ■ ■ Security and Performance ■CHAPTER 15 Ajax and ASP.NET Security. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329 ■CHAPTER 16 Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351 ■CHAPTER 17 Debugging Your Application. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373 ■CHAPTER 18 Ajax and Site Testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391 ■CHAPTER 19 Ajax Usability. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409 PART 5 ■ ■ ■ Moving Forward ■CHAPTER 20 Atlas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425 ■INDEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453 v 6706fmfinal.qxd 6/20/06 3:40 PM Page v 6706fmfinal.qxd 6/20/06 3:40 PM Page vi Contents About the Author . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv About the Technical Reviewer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvi Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xix PART 1 ■ ■ ■ Ajax Concepts ■CHAPTER 1 History and Revival of Ajax. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 The Age of Discovery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1970. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1975. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1979. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1991. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 The Age of Implementa tion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1993. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1994. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 The Age of War . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1995. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1996. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1997. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1998. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1999. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 The Age of Transition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2000. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2001. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 The Age of Experimentation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2002–2004. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2005. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Summar y . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 vii 6706fmfinal.qxd 6/20/06 3:40 PM Page vii ■CHAPTER 2 Introducing JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 HTML Presence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Scripting Load Cycle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 During Document Load. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 After Document Load . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 When Called by Other JavaScript Statements . . . . . . . . . . . . . . . . . . 21 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Concatenating and Adding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Variable Scope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Control Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Looping and Iteration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 while Loops. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 do/while Loops. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 for Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Switch Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Returning Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 Creating an Array. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 Declaring Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 Dec laring Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 Error Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 ■CHAPTER 3 The XmlHttpRequest Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Initialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 LOADVIEWSTATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 LOADPOSTBACKDA T A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 LOAD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 RAISEPOSTBACKEVENT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 SA VEVIEWST ATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 Render. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 Asynchronous Resource Retrieval . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Header Requests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 Retrieving XML Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 Introducing JSON. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 Summar y . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 ■CONTENTSviii 6706fmfinal.qxd 6/20/06 3:40 PM Page viii ■CHAPTER 4 N-Tier and Ajax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 What Is N-Tier? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 Application Layer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 Business Layer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 Data Layer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 Data Store . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 The Place for Ajax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 Sample N-Tier Application. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 Presentation Layer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 Business Layer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 Data Layer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 Data Store . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 PART 2 ■ ■ ■ Ajax Components ■CHAPTER 5 Rich Internet Applications. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 What It Is Not . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 What It Could Be . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 Cross-browser Support. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 Client-side Logic Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 Application Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 Browser Transition Logic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 RIA Recommendations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 Focused Interaction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 Page Disruptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 Compelling Navigation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 URL Linking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 ■CONTENTS ix 6706fmfinal.qxd 6/20/06 3:40 PM Page ix [...]... throughout the book are detailed here • Chapter 3 is a detailed discussion on the heart of Ajax: the XmlHttpRequest object • Chapters 4 and 5 discuss the role of Ajax in an n-tiered environment and the definition of Ajax as it relates to the world of rich clients • Chapter 6 is an examination of cascading style sheets and the Document Object Model The DOM and CSS are two very key components to Ajax, and this... learning and using both, then you’re selling yourself short.” Well put, Rocky! Ajax. NET Library As Ajax grows in popularity, so does the volume of Ajax. NET interface libraries available across the web Essentially these libraries take the complexity out of utilizing XmlHttpRequest and render simple methods for client- and server-side usage You could, of course, skip the implementation of an Ajax. NET library... (http://www.popularmechanics.com) jumped into the marketing pool, declaring it one of the “Must-Know Technologies of 2006.” The articles, as a whole, tended to agree that it was Google that kick-started the revival of DHTML and Ajax Google had broken the ice with Gmail and Suggest, and next they dropped the Google Maps bomb on the Internet community The rookie site (http://maps.google.com) used Ajax to allow users the ability to... chapters Click the Source Code link and search for Pro Ajax and the NET 2.0 Platform You’ll find that the code has been organized in chapter format for easy location and execution Summary I’m confident that working through the examples and illustrations contained within will leave you well prepared for some really cool development work It truly is an exciting time in the web development world, and I hope... that the browser war really became ugly And by ugly, I mean that Netscape and Microsoft began to run with their own perception of what technologies should be brought to the web and how they should be built within the script The W3C had published CSS specifications; however, the interpretation of the standard differed greatly between the two application giants Both parties would have agreed to the idea... possible results for you The result set that is returned to the client is cached, so that if a user presses the Backspace key, the client will simply call up the previously held results and redisplay them rather than making another hit to the database It’s an awesome and simplified use of the Ajax toolset, developed primarily by Kevin Gibbs on a part-time basis Google has acknowledged the fact that most... library and code the XmlHttpRequest processes yourself However, as many developers have said, “Why reinvent the wheel?” xxi 6706fmfinal.qxd xxii 6/20/06 3:40 PM Page xxii sINTRODUCTION There are many libraries out there, as I’ve said before, but two stand out from the rest: • Michael Schwarz’s Ajax. NET Professional (http://weblogs.asp.net/mschwarz/): A popular and effective toolset It’s updated and supported... within the IE browser However, more and more companies/ open source communities are embracing the object, and subsequently the XmlHttpRequest object has become widely compatible with modern browsers: • Internet Explorer 5.0 and above • Firefox 1.0 and above • Safari 1.2 and above • Opera 7.6 and above • Konqueror • Netscape 7.0 and above JavaScript Enabled One of the criticisms surrounding Ajax. NET technology... HISTORY AND REVIVAL OF AJAX predecessor of the modern Internet was birthed in all its binary glory The ARPANET (Advanced Research Projects Agency Network) came to life as the end result of J C R Licklider’s notion of a “galactic network” of data communication The first four nodes of Arpanet were limited to the west coast of the U.S as shown in Figure 1-1 Figure 1-1 The first four nodes of the ARPANET... to the web The explosion of Internet access spread across the world with tremendous fervor Most historians would point to this year as the phase at which the web went “BOOM!” 1994 The Netscape 1 browser hit the web and quickly took over as the tool of choice for many It was a much needed improvement over the Mozilla application, supporting multiple TCP/IP connections as well client-side cookies The