Ajax: The Definitive Guide
Ajax: The Definitive Guide By Anthony T. Holdener III
January 2008
Pages: 980

Cover | Table of Contents | Forum | Colophon


Index


[ Symbols ], 
[ Numbers ], 
[ A ], 
[ B ], 
[ C ], 
[ D ], 
[ E ], 
[ F ], 
[ G ], 
[ H ], 
[ I ], 
[ J ], 
[ K ], 
[ L ], 
[ M ], 
[ N ], 
[ O ], 
[ P ], 
[ Q ], 
[ R ], 
[ S ], 
[ T ], 
[ U ], 
[ V ], 
[ W ], 
[ X ], 
[ Y ], 
[ Z ], 


Symbols[ Top ]
$ (dollar sign)
      $$( ) function, 98
      $( ) function, 98
      $F( ) function, 98, 496
/// (triple slash) documentation comments in C#, 27
== (equal) operator, 538
=== (strict equality) operator, 538
@ (at symbol)
      @import rule, 388
      documentation comments, 27
[ ] (square brackets) in array literals, 824
{ } (curly braces) in object literals, 825
| (pipe character), separating lists, 226

Numbers[ Top ]
3D, perceiving, 183
411Sync, 656

A[ Top ]
<a> elements
      id attribute (XHTML 1.0), 321
      new window without a target, 694
      using in buttons, 181-184
absolute font sizes, 386
abstract games, 724
accessibility, 167-171
      creating alternative application version, 170
      forms, 485-488, 520
      importance of, 169
      issues with Ajax applications, 169, 922
      U. S. government web applications, 33
      W3C-WAI (Web Accesibility Initiative), 168
accordion navigation, 236-239
      chunks-of-data structuring, 236
      example of, 238
      hiding content sections after page loading, 237
      Prototype-style accordion object, 238
      setting up accordion for use with Ajax, 239
Action Pack (Ruby on Rails), 59
ActionController library, 59
ActionScript, 733
ActionView.ActionController library, 59
Active Server Pages (ASP), 39
ActiveRecord library (Ruby on Rails), 59
addEventListener( ) method, 131
Adobe
      Flash, 733
      Shockwave, 734
advanced searching, 576
Adventure game, 726
adventure games, 726-727
aggregators, feed, 614
Ajax, 4
      changes in web page interaction, 8
      evolution of the name, 8
      risks associated with use, reference, 916-924
      support by browser engines, 18
      Web 2.0 applications, 20
      what it's not good for, 34
Ajax web applications (see RIAs)
Ajax.NET, 97
Ajax.PeriodicalUpdater() object, 690, 868
Ajax.PeriodicUpdater object, 101
Ajax.Request object, 99
Ajax.Request( ) method, callbacks, 416
Ajax.Responders object, 867
Ajax.Updater object, 101, 867
      options, 101
ajaxload.info web site, 436
Akismet (blogging API), 620, 892
alert boxes, 335
      integrating the window into web applications, 335-347
            keeping focus and closing the pop up, 339-343
            moving the window, 344-347
            window style, 336-339
      variations caused by operating systems and browsers, 335
alpha channel, 438
alpha transparency, 438
      support by PNG format, 440
alternate stylesheets, 364, 371
      font size, 389
"Alternative Style: Working with Alternate Style Sheets", 372
Amazon Standard Item Number (ASIN), 598
Amazon Web Services (see AWS)
Amazon.com
      Book page, 154
      breadcrumbs on, 221
      organizing tools, 155
      web services, 652
      XML Scratch Pad, 609
Amnesty International, 656, 892
Amp's main page, 144
animation, 434-481
      Ajax, 453-481
            dragging and dropping, 454-464
            drawing libraries, 472-481
            dynamically animating position of an object, 464-467
            effects on objects, 467-472
            object manipulations, 467-472
            using frameworks, 453
      building with PNG format, 439-453
            CSS, 441
            differences from GIFs, 440
            JavaScript looping, 442-444
            more robust animation object, 444-448
            using Ajax, 448-453
      character animation for games, 735-753
            moving the character, 742-753
            walking loop, 735-742
      GIF format
            history of, 435
            how it works, 435-437
      on the Web, 434
animation object (example), 442-444
      adding Ajax, 448-453
      starting, pausing, and stopping programmatically, 444-448
AOL Instant Messenger, 893
Apache Software Foundation (ASF), Jakarta Struts, 60
Apache web server, 36
      features, 37
      mod_headers module, 812
      module to handle compression, 814
      typical HTTP header sent from, 811
APIs, web service, 618, 619-658
      Ajax and, 657
      blogging services, 620-623
      bookmark services, 623-626
      financial services, 626
      mapping services, 627-631
      news and weather services, 636-641
            NewsIsFree, 637-641
      other services, 656
      photo services, 641-649
            Flickr, 642-649
      reference, 892-915
      reference services, 650
      search services, 651
      shopping services, 652-655
            eBay, 653-655
appearance of an application (see visualization)
appendChild( ) method, 108, 259, 260
Apple
      Mac OS X alert windows, 335
      Safari web browser, 18
<applet> elements, id attribute (XHTML 1.0), 321
applets, 734
arcade games, 731
ArcWeb, 627, 893
array literals, 824
arrays, using to store changing information, 399
ASCII, 852
      online list of character codes, 223
ASIN (Amazon Standard Item Number), 598
ASP (Active Server Pages), 39, 40
ASP.NET, 40
assemblies (.NET), 59
asynchronous, 864
Atom, 16, 614
      support by browser engines, 18
attributes
      creating for DOM elements, 106
      creating for DOM nodes, 107
      <frame> elements, style attributes, 317
      <frameset> element, 317
      XHTML versus HTML form elements, 484
      XML, 845
Audioscrobbler, 632
AWS (Amazon Web Services)
      gathering AWS response and formatting for client, 610
      methods available with, 608
      REST request, 609
      SOAP request using, 598
      SOAP request using PHP, 607
      WSDL document (example), 601-604

B[ Top ]
back and forward buttons (browsers), problems with Ajax, 245, 918
background check records, 667
backward compatibility, web developers and, 19
balance (application layout), 159
bar graph based on user-submitted data, 476-481
      completed page with bar graph, 481
      JavaScript handling response, request, and drawing, 478-480
      page to request data for the graph, 476
      server-side script handling dynamic bar graph request, 477
base64_encode( ) function, 312
BaseError object, 409
BBC, 637, 893
before pseudoclass (CSS), 297
behavior property, 314
Berlind, David, 661
Bible lookup service, 656
Big O notations (sorting algorithms), 268
binary transparency, 439
bindings element (WSDL), 601
Blinksale (invoice service), 626, 894
bloat, avoiding in web application design, 143
blogging services, 620-623
      list of some popular blogging APIs, 620
      using FeedBurner MgmtAPI in an application, 621-623
Blogmarks (bookmarking service), 624, 894
blogs, 155
body component of a web page, 792
      breaking into smaller pieces, 793-795
book information database (ISBNdb), 650
bookmark services, 623-626
      del.icio.us API, 624-626
      listing of some popular APIs, 623
bookmarks, 244
      problems with Ajax, 917
breadcrumbs, 221-226
      creating with XHTML lists and CSS, 222
            CSS styling rules, 222
      dynamically creating, 225
      importNode( ) function for Internet Explorer, 224
      supplied by server response, 223
Bresenham line algorithm, 748, 750
Bresenham, Jack E., 750
broken links, testing in web applications, 26
browsers, 17-19
      alert windows, 335
      alpha transparency support, 439
      application navigation and, 151
      back and forward buttons, problems with Ajax, 245
      bookmarks, problems with Ajax, 244
      code for browser detection, 198-199
      compressed content, 814
      CSS specifications, 13
      customizations, 363-367
            character encoding, 366
            font sizes, 366
            stylesheets, 364-366
      enhancing to become true applications, xiii
      font sizes, relative, 386
      functioning of file menu example, 209
      Gecko layout engine, 18
      KHTML/WebCore layout engines, 18
      other layout engines, 19
browsers (continued)
      page loading status, 240
      plug-ins, 733
            Flash, 733
            Java applets, 734
            Shockwave, 734
      pop-up windows and, 362
      Presto layout engine, 19
      right mouse button clicks, 764
      standards compliance and backward compatibility, 20
      standards supported by browser engines, 17
      tables
            populating, innerHTML or DOM methods, 259
            problems with, 248
      testing performance in web application development, 26
      Trident layout engine, 18
      web standards and, 10
      XMLHttpRequest object implementations, 69
      XPath implementations, 83
      XSLT and XPath support, 17
bubble sorts, 268
business logic layer (BLL), 804
business records, 667
businesses
      advantages of Ajax applications, 672-674
            ease of installation, 674
            reducing costs, 673
      communication through combined applications, 720
      communication through file sharing, 691-703
            file notification, 696-698
            receiving the file, 698-703
            sending a file, 692-696
      communication through whiteboards, 703-719
            building the board, 703-707
            enhancing with pen color choices, 715-718
            enhancing with stamps and shapes, 719
            replicating rendering on all users' screens, 707-714
      real-time communication, 674-691
            chat client, 678-686
            chat server, 686-690
            client/server communication, 675
            connecting to chat, 675-678
button_onclick function (example), 465
buttons
      image built into a CSS button, 184
      navigation bar, 180-184
      representing 3D, 183
buySAFE, 894
BVS Performance Center for Banks, 145

C[ Top ]
C# .NET, adding compression to a site, 832
C# documentation comments, 26
Cache-Control header (HTTP), 813
Cairo graphics engine (Gecko), 19
CakePHP framework, 62
callbacks
      Ajax response, 864
      Ajax.Request( ) method, 416
      supporting Ajax calls to the server for animations, 481
capital letters, use in application text, 166
Cascading Style Sheets (see CSS)
Casciano, Chris, 332
Castlevania (arcade game), 731
catch clause, 414
Cavedog's Total Annihilation game, 724
cells collection, 136
CGI (Common Gateway Interface), 37
      FastCGI, 37
Channel Definition Format (CDF), 15
character class (example)
      changes in direction, 770
      collision bounding constraints, 754
      collision detection and other functionality, 756-759
      modified animation object as basis, 735-740
      modified for different characters and animation sequences, 740-742
      mouse click event handling, 749-753
      movement functionality added, 743-747
      starts and stops movement, event handling, 770
character encodings, 851
      choosing in browsers, 366
character references, 851
character.js file, 778-783
chat application (example), 672-691
      chat client, 678-686
            adding events to input controls, 680
            event-handling functions, SendMessage( ) and QuitChat( ), 681
            JavaScript code to run Ajax chat client, 683-686
            monitoring message queue on server and displaying new messages, 682
            PHP that creates structure, 679
            tracking current users, 683
      chat server, 686-690
            get_messages.php file, 688
            get_users.php file, 690
            logout.php file, 686
            put_message.php file, 687
            quote_smart( ) function to prevent SQL injection, 687
      client/server communication, 675
      connecting to chat, 675-678
      working Ajax chat application, 690
chat services, 155
checkboxes (form controls), 493
      custom, 499
            properties, 499
      setting error indicator to, 553
      using id attributes to get values, 494
Chevron, Jemima, 718
chunks-of-data structuring, 236
circular collision detection, 759-762
      Pythagorean theorem, 759
      testing a point and a circle, 761
      testing for a circle and a rectangle, 761
      testing two circles for collision, 761
class attribute, using for quick customizations, 398
classes
      FCL (Framework Class Library), 58
      specification in web application development, 25
client frameworks, 94-97
      Dojo Toolkit, 94
      DWR, 96
      jQuery, 96
      other, 97
      Prototype, 95
            objects used with Ajax, 99-102
      Sarissa, 97
client request for a web service, 606
client side of Ajax applications
      modular coding, 791-803
            CSS, 795-802
            JavaScript, 802
            XHTML, 791-795
      optimizations, 818-830
            JavaScript, 822-830
            XHTML and CSS, 819-822
client/server architecture, 28
      communication between client and server, 838
      communication model for chat program, 675
      data validation duties, 536
      RPC for distributed computing, 595
      web sites in the year 2000, 6
client-side errors, 409
      notifying the user, 419
closePopUp( ) function, 340
CLR (Common Language Runtime), 40
CMSs (Content Management Systems), Zope and, 62
CNET, 653, 895
code examples in this book, xviii
code optimization, 839
coincident lines, 764
collisions, 753-764
      circular collision detection, 759-762
      detection techniques, 753
      handling, 772
      linear collision detection, 762-764
      rectangular collision detection, 754-759
color
      color themes switcher, creating, 392-397
      contrasts between text and its background, 166
      GIF image format, 256-color-palette limit, 437
      palette-based GIF images, 436
      true-color images in GIF file format, 438
color wheel, 718
colors.css file, 369
      example of contents, 370
Colossal Cave Adventure, 726
comb sorts, 268
comma-separated value (CSV) files, 47
comments
      documenting code, 27
      removing from CSS and XHTML files, 819
      removing from JavaScript files, 822
      XML, 849
commercial Ajax web applications, 32
Common Gateway Interface (see CGI)
Common Intermediate Language (CIL), 58
Common Language Infrastructure (CLI), 59
Common Language Specification (CLS), 58
Common Type System (CTS), 58
communication functionality, 155
communication needs for business
      combining applications, 720
      file sharing, 691-703
            file notification, 696-698
            receiving the file, 698-703
            sending a file, 692-696
      real-time communication, 674-691
            chat client, 678-686
            chat server, 686-690
            client/server communication, 675
            connecting to chat, 675-678
      whiteboards, 703-719
            building the board, 703-707
            enhancing with pen color choices, 715-718
            enhancing with stamps and shapes, 719
            replicating rendering on all users' screens, 707-714
compiled languages, 37
compression, 830-833
      adding to a site using C# .NET, 832
      adding to a site using PHP, 831
      HTTP, 813-815
CompuServe, GIF format, 435
conditional catch clause, 414
confirmation window, 349-351
consistency
      importance in application layout, 161
      importance in web application design, 150
content changes, Ajax and, 923
Control.Slider object, 389-392
controller (MVC model), 30
controls and widgets, design of, 316
cookies, 375-381
      incorporating into style switcher object, 378-381
      simple cookie object (example), 376-378
      storing user customization information, 407
cost savings from using web applications, 673
Craigslist, 660
CREATE TABLE statement (SQL), 49
createDocumentFragment( ) method, 107
createElement( ) method, 106, 260
createTextNode( ) method, 107, 259, 260
createXMLHttpRequest( ) function, 71
credit cards, validating, 541-543
credit checks, 626
"Cross-Browser Scripting with importNode( )", 329
cross-browser compatibility, testing for web applications, 26
Crowther, William, 726
Crysis (FPS game), 723
CSS (Cascading Style Sheets), 5, 117-129
      CSS1 specification, 13
      CSS2 specification, 13
            properties and JavaScript equivalents, 119-124
      CSS2.1 specification, 13
      CSS3 specification, 13
      Dojo Toolkit drag-and-drop functionality, 457
      drop-down menu solution, 188-191
      font size switching, 387-389
      forms, 498
      image rollovers
            in browsers without scripting, 186
            in tabs, 216
      layout using, 250-252
      modifying and removing style, 118
            stylesheet manipulation methods, 118
      modularity of CSS files, 795-802
            media types, 800
            style properties, 796-800
      notification of errors in form data, 552-555
            error rules, 553-554
            rule switching with JavaScript, 555
      numbering system for document and table of contents, 296
      optimizations, 819-822
            removing comments from files, 819
            removing unnecessary whitespace, 819
            shortening class and id names, 821
            using shorthand notation, 822
      pen color changes in whiteboard application, 716
      PNG image to be used in animation, 441
      Results objects, Google's AJAX Search API, 592
      rule types, 117
      sample tabs using XHTML lists, 213-215
      simple navigation bars styled with, 176-180
      slide show application, Internet Explorer version, 314
      slide show styling, 305-307
      sortable list styling, 300
      standards supported by browser engines, 18
      style information, 126
      style switching, structure for CSS files, 368-371
      styles for a Windows-like file menu, 195-198
      styling <div> element to replace <iframe>, 324
      styling alert windows, 338
      styling breadcrumbs, 222
            Internet Explorer and, 223
      styling links at bottom of a page, 226
      support by ASP.NET, 40
      tab content sections, hiding from view, 218
      table styling, keeping with sorts, 280-283
      Zen Garden site, 160, 332
            separating structure from presentation, 333-334
CSS2Properties object, 119
cssRules collection, 128
CTS (Common Type System), 58
CURL package, 655
Custom Search Engine, 587
CustomError object (example), 423-426
      modified to garner user feedback, 428-432

D[ Top ]
Daily CSS Fun web site, 332
Dalton Mailing Service, Inc., 146
data access layer (DAL), 804
data access module (model in MVC), 30
data exchange formats, choosing between XML and JSON, 92-94
data sources (for mashups), 665-668
      open source services, 668
      public data, 665-667
            background check records, 667
            business records, 667
            people searches, 667
            public records, 666
      selecting, 670
data validation, 534-562
      Ajax client/server validation, 558-562
            advantages of, 562
            checking form fields on the fly, 558-561
      CSS notification of errors, 552-555
            CSS error rules, 553-554
            rule switching with JavaScript, 555
      feeds, 616
      importance of, 534
      server-side, 555-558
            checking whether expected data was received, 556
            protecting the database, 557
            returning problems to the client, 557
            value checks, 557
      using JavaScript, 536-552
            checking phone numbers, 539
            Dojo Toolkit, 549-552
            regular expressions, 538
            validation object, 543-549
            value checking, 537
data, Ajax optimization, 839
databases, 44-48
      basic three-tier application design pattern, 29
      errors, 412
      IBM DB2, 45
      indexing, 569, 836
      interaction with, using frameworks, 64-67
      ISBNdb, 650
      logging errors to, 420
      Microsoft SQL Server, 45
      nonrelational database models, 47
      open source, MySQL and PostgreSQL, 46
      optimization of SQL, 808
      Oracle, 45
      protecting from attacks, 557
      querying, steps involved, 65
      saving form data sent from clients, 528
      server-side code to store element position, 405
      storing information for a draggable object, 404
      storing user customization information, 407
      storing whiteboard coordinates, 710
DataUnison eBay Research, 653, 895
Dave.TV (video service), 632, 895
dBASE, 47
declarations
      XML, 844
      XSLT, 856
decode( ) method (json class), 89
decrementing operators, 829
del.icio.us (bookmark service), 623, 624-626, 896
      adding a post programmatically using PHP, 624-626
      parameters to add a post, 624
DELETE statement (SQL), 53
delivery company, mashup pinpointing truck locations, 671
demographic information service, 650
density (in application layout), 160
Department of Corrections, data on felonies, 667
descriptors, GIF, 435
design of Ajax interfaces (see interfaces, designing)
design patterns, 28-31, 148
      client/server, 28
      MVC (model-view-controller), 30
      three-tier (basic), 29
      Unique URLs, 244
design phase
      Ajax web application development, 25
      software development life cycle, 23
DHTML Tree (Zapatec), 234
Diablo game series, 729
dimensional databases, 47
<div> elements
      hints for user searches, 577
      innerHTML property, placing content into windows, 347
      making draggable, 455
      popupContainer, 340
      using with Ajax to replace <iframe> elements, 323-329
            inserting content, 325-329
            styling the <div> element, 324
      whiteboard, 703
Django framework, 61
document fragments, 828
Document object
      getElementById( ) method, 494
      loading XML string into, 81
      loadXML( ) method, 79
      methods used to create nodes in a document tree, 107
      setProperty( ) method, 83
Document Object Model (see DOM)
document tree, 103
      root element or root node, 104
      text element or text node, 104
      W3C node types, 105
document.getElementsByClassName( ) function, 98
documentation, 26
documentFragment object, constructing tables, 260
DocumentFragment objects, 107
      appending to list of child nodes, 108
Dojo Toolkit, 94, 880-884
      dojo.io.bind, 881
      drag-and-drop functionality, 457-460
            adding a handle to draggable object, 458
            creating draggables and droppables, 458
            methods for HtmlDragSource object, 459
            script to enable, 457
      effects, 468
            online demo, 470
      handling results, 881
      JSON with dot notation, 882
      moving objects, 464
      sending form data, 883
      sortable list drag-and-drop functionality, 301-302
      validation objects, 549-552
      widgets for building form elements and forms, 515-517
dollar sign function, $( ), 98
DOM (Document Object Model), 5, 103-140
      changing styles, 117-129
            Internet Explorer and, 127
            style information, 126
      creating elements, attributes, and objects, 106-108
      Document object traversal, 105
      DOM Level 1 specification, 13
      DOM Level 2 specification, 13, 106
            Internet Explorer and, 224
      DOM Level 3 specification, 13
            XPath support by browsers, 83
      element, attribute, and object information, 112-115
            methods, listed, 113
            properties, listed, 114
      events, 129-135
            creating, 130
            information about, 131-133
            initializing, 130
            Internet Explorer and, 133
      Form object, 490
      importNode( ) method, 327
      innerHTML property and, 138-140
      JavaScript optimization and, 827-828
      keyboard and mouse events, 764
      loading XML file into Document object, 79
      methods for dynamic table creation, 258
      modifying and removing elements, attributes, and objects, 108-112
            methods, listed, 110-112
      parsing, 77
      problems with using tables for layout, 248
      specifications, 13
      standardized list of DOM node types, 104
      standards supported by browser engines, 18
      tables, 135-138
      traversing the DOM document tree, 115-117
            methods, listed, 116
            traversal properties, listed, 116
dot notation, 882
dragdrop components, 802
Draggable object, 344-345, 403, 455-456
      change callback function, 456
      container with handle for dragging point, 456
      optional parameters, 455
Draggable object (Rico), 460
Draggables object, 455
dragging and dropping, 157
      animation technique, 454-464
            Dojo Toolkit, 457-460
            Rico library, 460
            script.aculo.us objects, 455-457
            wz_dragdrop.js library, 460-463
            Zapatec library, 463
      sortable lists, 297-302
DrawCanvasUpdate( ) function, 713
drawing libraries, 472-481
      JavaScript Vector Graphics Library, 472-481
            Ajax application, 476-481
            methods available to, 474-476
DrawPoint( ) method, 706
driving directions searches
      MapQuest classic site, 6
      MapQuest site using Ajax, 8
drop downs (form controls), 493
      custom, 505-515
            properties, 505
      preparing for the addition of Ajax, 495
drop-down menus, 188-191
Droppables object, 456
      add( ) method, optional parameters, 456
      callback functions, 457
Dropzone object (Rico), 460
DTDs (document type definitions), 853
      Frameset, 316
      SOAP documents and, 598
Dun and Bradstreet Credit Check, 626, 896
DWR framework, 96
dynamic content, providing
      with CGI, 37
      with FastCGI, 37
      with servlets, 38
      with SSI, 38
dynamic directions (character movement), 747

E[ Top ]
eBay, 653, 653-655, 896
      API and documentation, 653
      input parameters for REST requests, 654
      requesting search results from REST API, 654
      REST methods available in the API, 654
ECMA (European Computer Manufacturer's Association) International, 12
Ecma International, 10
ECMAScript, 12
      ActionScript implementation, 733
e-commerce sites, 652
economic games, 725
Edition 4 of ECMA-262, 19
Education and Outreach Working Group (WAI), 168
educational environment (web applications), 32
Edwards, Dean, 314
Effect object
      Accordion( ) method, 237
            changing to open multiple sections, 238
      Position( ), 466
      SlideUp( ) and SlideDown( ) methods, 239
Effect object (Rico), 464
effects and dragdrop components, 802
effects on objects (animation), 467-472
      Dojo Toolkit, 468
      script.aculo.us, 467
      Zapatec Effects library, 470-472
efficiency of web applications, 150
electronic products data center, 653
Element interface, 106
Element object
      hide( ) method, 242, 340
      removeClassName( ) and addClassName( ) methods, 283
      show( ) method, 242, 340
elements
      DOM, 106
      form, 482-484
      SOAP document, 598
      WSDL, 599-601
      XML, 845
      XSLT, 856-861
email addresses, validating, 540
embedded interpreters, FastCGI and, 37
empty( ) method, 556
encode( ) method, 90
Encoding namespace (SOAP), 598
end users, expecting too much of, 147
English Standard Version (ESV) Bible Lookup, 656, 897
Enterprise Resource Planning (ERP) packages, 62
entity headers (HTTP), 810
entity references, 849
Envelope namespace (SOAP), 598
environments (Ajax web applications), 31-33
      commercial, 32
      educational, 32
      government, 33
      intranet, 31
      specific content, 33
equality testing, 537
ERP5, 62
error levels, 421
      defining custom error levels, 422
errors, 408-433
      displaying user errors, 420-433
            following site design, 421-433
      handling, 417-420
            emailing the developer, 420
            logging to a database, 420
            notifying the user, 418
      ignorable, 417
      JavaScript, 409
      requiring immediate attention, 417
      server-side, 410-413
            database, 412
            external errors, 413
            server scripting, 410-412
      trapping, 414-417
            Ajax requests, 416
            throwing an error, 415
            try...catch...finally block, 414
escaping potentially dangerous characters to the database, 557
ESPN main page, 143
ESV (English Standard Version) Bible Lookup, 656, 897
Ethernet protocol, 816
      packets, 817
European Computer Manufacturer's Association (ECMA) International, 12
EvalError object, 409
event handling, 767-776
      changes in direction, 770
      receiving data, 774
      starts and stops, 767-770
      user input, 767
event listeners, 131
Event object, 132
      constants and methods, 342
      observe( ) method, 343, 442
      pointerX( ) and pointerY( ) methods, 704, 766
EventCapturer object, 132
EventListener object, 132
events
      DOM, 129-135
            creating, 130
            focus and, 343
            information about, 131-133
            initializing, 130
            Internet Explorer and, 133
            modules, 129
      importNode( ) function that registers events, 327-329
      replacement of DOM Events with XML Events, 11
Events object (example), 767-770
      changes in direction, 770
      collision events, 773
      making requests and parsing commands from server, 774
events.js file, 783-786
Excel, 47
execution speed, 809
execution time, 808
      optimizing in JavaScript, 826
Expires response header (HTTP), 813
Extensible HyperText Markup Language (see XHTML)
Extensible Markup Language (see XML)
Extensible Stylesheet Language Transformation (see XSLT)
extension blocks (GIF), 436, 438

F[ Top ]
Facebook, 656, 897
Faces.com, 642, 897
FastCGI, 37
FCL (Framework Class Library), 58
FedEx, 898
feed aggregators, 614
feedback
      in Ajax web application design, 152
      getting from users regarding errors, 428-432
FeedBlitz (blogging service), 620, 898
FeedBurner web services, 620, 898
      MgmtAPI, 621
FeedMap, 627, 898
Fielding, Roy, 605
<fieldset> elements, 483
      grouping associated form elements, 489
      setting error indicator to checkboxes and radio buttons, 553
file menu, 192-212
      adding Ajax, 210
      code for browser detection, 198-199
      CSS styles for Windows-like file menu, 195-198
      JavaScript code for manipulating, 199-209
      XHTML file, 192-195
file sharing, 691-703
      file notification, 696-698
            checking server for file notices, 696
            get_file_notices.php file, 697
            JSON response from server, 697
      receiving the file, 698-703
            delete_file.php, 700
            PHP file checking indicator and giving response to sender, 702
            sending user client monitoring for receiving, 700-702
            server handling of get_file.php request, 698
      sending a file, 692-696
            PHP file to create form for file transfer, 692-694
            saving file and alerting receiving user, 694
file size, 807, 808
file uploads from client to server, 529
financial services, 626
Firefox
      character encoding changes, 367
      feedback agent, 428
      text size changes, 367
      user changes to browser theme, 363
:first-child pseudoselector (CSS), 223
first-person shooter (FPS) games, 722
"Fixing the Back Button and Enabling Bookmarking for Ajax Apps", 244
Flash, 733
flat file databases, 47
flexibility of web applications, 150
Flickr, 155, 641, 899
      example REST request, 642
      example REST response, 642
      JSON response to client, 649
      methods available within the API, 643-648
      organizing tools, 155
      response formats, 642
      REST request with JSON response to client (example), 648
focal point (of an application), 161
focus
      keeping focus on a pop-up alert box, 339-343
      poor focus in web application design, 144
focusOnPopUP( ) function (example), 340
fonts, 162-167
      browser font size changes, 366
      color contrasts, 166
      commanding attention to text, 166
      font families and their types, 163-166
      spacing of text, 166
      switching font sizes, 386-392
            CSS font file, 387-389
            font-size slider bar, 389-392
            relative font sizes, 386
      use of capital letters, 166
fonts.css file, 369
      example of contents, 370
Food Candy, 656
for loops, optimization techniques, 826
form buttons, 493
<form> elements, 483
      <fieldset> element, 489
      id attribute (XHTML 1.0), 321
      name attribute, 490
Form object
      properties, 493
      submit( ) and reset( ) methods, 493
Form.Validation object (example), 543-549
      added functionality for Ajax, 558-561
forms, 28, 154, 482-533
      accessibility, 485-488
      aligning controls using CSS, 251
      changing appearance of, 498
            using CSS, 498
      creating custom form controls
            drop downs, 505-515
            radio buttons and checkboxes, 499-505
      custom form objects in libraries and toolkits, 515-519
            Dojo Toolkit, 515-517
            Zapatec library, 518-519
      elements, 482-484
      file transfer form, 692-694
      GSearchForm object, 585
      HTML forms, replacement with XForms, 11
      larger form in the navigation window, 353-355
      manipulation with JavaScript, 490-497
      sending data with Dojo Toolkit, 883
      server handling of Ajax request, 524-531
            emailing form data sent from the client, 527
            GET/POST/RAW POST requests, 525
            getting file uploads, 529
            saving form data in a database, 528
            sending data back to the client, 529
      server responses, 531-533
            client handling of complex response, 532
            reporting success or failure, 531
      submission with MooTools, 880
      submitting a form using Ajax, 519-524
            code example, 522-524
            function looping through elements and getting values, 521
      switching to different languages, 399-400
      (see also data validation)
forums, 155
forward button (browsers), problems with Ajax, 918
FPS (first-person shooter) games, 722
fragment identifiers
      creating unique URL for bookmarks, 244
      setting unique URLs for browser back button, 245
<frame> elements, 317
      id attribute (XHTML 1.0), 321
frames, 316-323
      animation, 442
      animations with PNG format, 439
      approximating iframes using Ajax and a <div> element, 323-329
            inserting content, 325-329
            styling the <div> element, 324
      <frameset> and <frame> elements, 317
      frameset, complete (example), 318
      iframe, 319
      packets, 816
      XHTML and, 321-323
            deprecation of frames and iframes, 321
            if frames must be used, 322
            using iframes as frames, 322
<frameset> elements, 317
Framework Class Library (FCL), 58
frameworks, 57
      advantages of, 63-67
            database interaction, 64
            database interaction using Zend Framework, 65
      client, 94-97
            Dojo toolkit, 94
            DWR, 96
            jQuery, 96
            other, 97
            Prototype, 95
            Sarissa, 97
      Java, 60
            Jakarta Struts, 60
            Spring, 60
            Tapestry, 61
      moving objects, 464
      .NET Framework, 58
      PHP, 62
            CakePHP, 62
            Zend, 63
            Zoop, 63
      Python, 61
      Ruby on Rails, 59
      Sarissa, 83
      using for animation, 453
      (see also listings under names of individual frameworks)
full text site searches, 568
functionality, 153-158
      code components based on, 802
      common web tools, 153-155
      determining tools needed, 157
      porting desktop functionality to the Web, 153
      tool tips, 355
      tools in desktop applications, 156
      types of functions in applications, 153
functions (XSLT), 861

G[ Top ]
games, 721-786
      character animation, 735-753
            moving the character, 742-753
            walking loop, 735-742
      collisions, 753-764
            circular collision detection, 759-762
            linear collision detection, 762-764
            rectangular collision detection, 754-759
      complete character.js file, 778-783
      complete events.js file, 783-786
      complete logic.js file, 776-778
      event handling, 767-776
            changes in direction, 770
            collisions, 772
            receiving data, 774
            starts and stops, 767-770
            user input, 767
      Internet requirements, 732-735
            game development with Ajax, 734
            plug-ins for browsers, 733
      resources for further information, 786
      user input, 764-766
            keyboard input, 765
            mouse input, 766
      web game genres, 721
            adventure games, 726-727
            arcade games, 731
            first-person shooters (FPS), 722
            other games, 732
            puzzle games, 730
            role-playing games (RPGs), 728-730
            strategy games, 724-726
Gecko
      future of, 19
      standards supported, 18
general headers (HTTP), 810
generating data, 157
GeoRSS, 630
Gestalt effect, 183
GET and POST methods, 72, 525
      parameters passed with Prototype Ajax object, 865
      submitting form data with Ajax, 520
getAttribute( ) method, 113
getDomDocument( ) method, 86
getElementById( ) method, 77, 105, 494
getElementsByTagName( ) method, 77, 105
GIF image format
      creating true-color GIF images, 438
      history of, 435
      how it works, 435-437
            file structure, 435
            palettes, 436
      limitations of, 437
            alpha transparency, 438
            color depth, 437
global responders (Prototype), 867
global variables, 826
Gmail, 171
God-like strategy games, 725
golden ratio, 163
GoldenNumber.Net, 163
Goodman, Danny, 258
Google
      Advanced Search page, 576
      AJAX Search API, 581-593, 652
            displaying results, 589-593
            GSearchControl object, 582-585
            GSearchForm object, 585
            GWebSearch object, 586
            Searchers available with, 581
            using the API, 587-589
      Class Reference site, 587
      Gmail service, 172
      Google Maps, 7, 627
      Google Reader, 614
      implementing a site search tool using Google API, 570-575
      map technology, use in HouseMaps.com mashup, 660
      search capabilities, 565
      search engine, 651
      search engine used for a site, 581
      sign up site for an account, 575
      web service APIs, reference listing, 899-901
government agencies, information from, 651
government environments (web applications), 33
graphing charts from user data (see bar graph based on user-submitted data)
graphs and charts, 157
GSearchControl object, 582-585
GSearchForm object, 585
Guha, R. V., 14
guided tours and wizards, 148
Gutmans, Andi, 41
GwebResult objects, 586
      CSS structure, 592
      example of use, 589
      properties, 588
GWebSearch object, 586

H[ Top ]
handle to the image (animation object), 442
Hansson, David Heinemeier, 59
hasAttribute( ) method, 113
hasChildNodes( ) method, 113
head component of a web page, 791-792
header elements, ordering of, 292
heap sorts, 268
hierarchical databases, 47
High Performance JavaScript Vector Graphics Library, 472
hints to the user on search topics, 577-580
      search submitted from hints, 580
Holovaty, Adrian, 61
HousingMaps.com, 660
HTML, 4
      frames, deprecated, 321
      HTML 5 draft specification, 12
      produced by ASP.NET, 40
      reformulation of HTML 4.01 as XML, 10
      REST and, 605
      standards supported by browser engines, 18
      Version 4.01 Frameset DTD, 316
      XHTML form elements versus, 484
      (see also XHTML)
html object (dojo.lfx.html), slideBy( ) and slideTo( ) methods, 465
HtmlDragSource object, 459
HtmlDragSource( ) method, 458
HtmlDropTarget object, 459
HTMLEvent module, 129
HtmlWidget object, 515
HTTP, 4, 809-815
      compression, 813-815
      errors and error messags, 421
      headers, 810-813
            Expires header, 813
            general and entity headery, 810
            removing/modifying with Apache module, 812
            response headers, 810
            typical header from an Apache web server, 811
      passing parameters to HTTP methods, 865
      REST and, 605
      servers, 36
      status codes, 612

I[ Top ]
IBM DB2, 45
      open source version, Express-C, 46
icons
      images and symbols used for, 167
      indicating Ajax actions, 240
id attribute
      <iframe> element, 322
      accessing form elements by, 494
      using for quick customizations, 398
      utilizing its flexibility in form elements, 494
      XHTML 1.0, 321
IETF (Internet Engineering Task Force), 10
      Atom Syndication Format protocol (RFC 4287), 16
<iframe> elements, 320
      differences from <frame> element, 322
      id attribute (XHTML 1.0), 321
      rendering bug fix for Internet Explorer, 347
      replacing using <div> element and Ajax, 323-329
      using for asynchronous file transfer, 529
      using instead of <frame>, 322
IIS (Internet Information Services), 36
      customizations with ISAPI filters, 812
      features, 37
      HTTP compression, 814
image descriptor (GIF), 435
image rollovers, 185-188
      CSS for browsers without scripting, 186
      JavaScript code for, 185
      JavaScript turned off in the browser, 186
images
      in form controls, 487
      indicating Ajax actions, 240
      tab with multiple states in one image, 216-217
      web application, 167
<img> elements, 321
implementation phase
      Ajax web application development, 26
      software development life cycle, 23
importNode( ) function
      cross-browser version registering events and styles, 327-329
      version for Internet Explorer, 224, 231
incrementing and decrementing operators, 829
indexes
      database, 836
      form index, 494
      page, string and database indexing, 570
indexing, page, 569
information boxes, 348
informational methods (DOM), 113
informational properties (DOM), 114
initialization methods (event), 130
initializePageStateFromURL( ) function, 245
inline documentation, 27
inline frames (see <iframe> elements)
innerHTML property, 138-140
      <div> element
            acting as table wrapper, 262
            placing content into windows, 347
            setting responseText to, 277
      applying data to DOM document tree, 260
      documented problems, 140
      DOM methods versus, 259
      issue with <tbody> element in Internet Explorer, 261
      using to put data into a table, 258
in-place editing, 157
<input> elements
      adding alternative text, 488
      checkbox and radio, using flexibility of id attribute, 494
      images, 487
      onblur( ) method, 558
      placement of labels, 485
      submit type, Ajax forms and, 520
      tabindex attribute, 488
      text, focus( ), blur( ), and select( ) methods, 493
      user search input, 577
INSERT statement (SQL), 51
insertBefore( ) method, 109
insertion sorts, 268
      simple implementation (example), 266
      table sort (example), 270-275
insertRow( ) and insertCell( ) methods, 258
      creating table rows and columns, 259
installation of web applications, time and cost savings, 674
instant messaging (IM), 691
interaction on a web page
      in the year 2000, 7
      changes brought about by Ajax, 9
interfaces, designing, 141-172
      accessibility, 167-171
      Ajax interface, 171
      functionality, 153-158
            common web tools, 153-155
            determining tools needed, 157
            tools in desktop applications, 156
            types of functions in applications, 153
      principles for Ajax web applications
            consistency, 150
            documentation and help, 152
            feedback, 152
            flexibility and efficiency, 150
            navigation, 151
      usability, 141-153
            common design mistakes, 142-147
            principles for Ajax web applications, 148-153
      visualization, 158-167
            application layout, 158-162
            images and icons, 167
Internet Engineering Task Force (see IETF)
Internet errors, 413
Internet Explorer
      :hover support on elements, 182
      alpha transparency support, 439
      alternatives to DOM stylesheet methods and properties, 127
      CSS drop-down menus and, 191
      CSS for image rollover, 187
      CSS hack for breadcrumbs, 223
      data URL problem workaround, 314
      events, 133
      font resizing issues, 386
      :hover workaround, 188
      <iframe> element, 320
      importNode( ) function for, 224, 231
      importNode( ) method, event attributes and, 329
      innerHTML property, 138-140, 259
Internet Explorer (continued)
      innerHTML/<tbody> issue, 261
            workaround, 262
      JavaScript error properties, 409
      rendering bug, draggable box and, 345
      Trident layout engine, 18
      user changes, 363
      W3C DOM stylesheets Recommendation and, 117
      web site information on stylesheet handling, 129
      XPath, 83
Internet Information Services (see IIS)
Internet protocols, 816
Internet relay chat (IRC), 691
interpreted languages, 41
intranets, use of Ajax web applications, 31
ISAPI filters, 812
      httpZip, 815
ISBNdb, 650, 901
isset( ) method, 556

J[ Top ]
Jakarta Struts framework, 60
Java, 43
      applets, 734
      frameworks, 60
      inline documentation, 27
      Java Remote Method Invocation (Java RMI), 596
      JRE (Java Runtime Environment), 734
      servlets, 38
Java Virtual Machines (JVMs), 44
Javadoc parser, 27
JavaScript, xiii, 5
      Ajax dependence on, 916
      data validation, 536-552
            specialized data checking, 539-543
            using Dojo Toolkit, 549-552
            using regular expressions, 538
            validation object, 543-549
            value checking, 537
      draggable <div> element, 455
      dynamically creating list to be used as table of contents, 293-295
      errors, 409
      execution speed, 809
      frameworks, toolkits, and libraries, 863-891
      Gecko 1.9 implementaton of, 19
      giving search hints to the user, 577-579
      image rollovers, 185
      inline documentation, 27
      jQuery library, 96
      looping (animation object), 442-444
      manipulating forms, 490-497
            getting and setting element values, 493
            getting form values, 490-493
      modular client-side coding, 802
            breaking code apart by functionality, 802
            page-specific components, 803
      moo.fx library, 96
      optimizations, 822-830
            Boolean variables, 823
            code speed enhancements, 826-830
            removing comments, 822
            removing whitespace, 822
            testing validity of a value, 823
            using array and object literals, 824
      produced by ASP.NET, 40
      properties equivalent to CSS2 properties, 119-124
      script.aculo.us library, 95, 238
      slide show application, 307-311
      sortable list initialization, 300
      sorting, 264-275
            quick sort algorithm, 269
            shell sort algorithm, 268
      specifications, 12
      support by browser engines, 18
      table pagination, 285-287
      var keyword, 743
      Vector Graphics Library, 472-481
            Ajax application, 476-481
            methods available to, 474-476
      version 1.5, 12
      version 1.7, 12
JavaScript Object Notation (see JSON)
JavaServer Pages (JSP), 38, 44
Johnson, Rod, 60
joins (database tables), 52
JPEG image format, 437
jQuery library, 96, 889-891
      functions for Ajax request functionality, 889
JRE (Java Runtime Environment), 734
JSDoc parser, 27
jsGraphics library, 704
      drawLine( ) and paint( ) methods, 706
      methods for drawing vector shapes, 719
      setColor( ) method, 718
JSON (JavaScript Object Notation), 68, 86
      array and object literals, 826
      evaluating in Prototype, 866
      Flickr response, 642
      handing in Dojo Toolkit, 882
      parsing JSON strings, 90
      requests and responses, 87-90
      response from Flickr, handling, 649
      response from server with whiteboard points, 713
      response to language change request for a form, 401
      response when file is being sent, 697
      script handling RAW POST as, 526
      search query response, 590
      web site, 87
      XML versus, 92-94
JSP (JavaServer Pages), 38, 44
JVMs (Java Virtual Machines), 44

K[ Top ]
Kaplan-Moss, Jacob, 61
KDE project, XHTML/WebCore browser engine, 18
keyboard input, 765
keypress event, 765
keys (database), 52
keyword searches, 566
      through mobile technology (411Sync), 656
KHTML/WebCore, 18
      standards supported, 18

L[ Top ]
<label> elements
      array for changes in language-switching process, 399
      placement for form elements, 485-488
      switching data to JSON response, 402
LAMP (Linux, Apache, MySQL, PHP [Perl/Python]), 42
languages
      changing site language with Ajax, 400-403
      programming (see programming languages)
      switching forms to different languages, 399-400
Last.fm, 632, 901
lastColumn property, 276
      JavaScript insertion sort, 271
layers, 804
layout
      application, 158-162
            balance, 159
            consistency in, 161
            density, 160
            general layout and navigation, 246
            images, 167
            linear layout on classic web sites, 158
            modern example of linear approach, 160
            organic layout, 158
            rule of thirds (or golden ratio), 163
            using CSS, 250-252
            using tables, 247-250
      page, 329-334
            dynamic nature of pages, 330
            separating structure from presentation, 333-334
      site navigation, 175-246
            menus, 175-212
layout engines (browser), 17
<legend> elements, 489
Lerdorf, Rasmus, 41
libraries, 453
      book information database (ISBNdb), 650
      jQuery, 889-891
      MochiKit, 886-889
      MooTools, 877-880
      Rico, 875
      Sarissa, 884-885
licenses, professional, 667
linear collision detection, 762-764
linear layout
      classic web sites, 158
      modern approach used in CSS Zen Garden, 160
line-of-sight path movement, 748
links
      alternate stylesheet, 364
      bottom-of-a-page navigation aids, 226-228
      color theme switches, 397
      main and alternate stylesheet links, 371
      testing for broken links, 26
Linux, alert windows, 335
Listamatic (web site), 223
lists, 291-315
      slide show application, 304-315
            CSS styling rules, 305-307
            JavaScript code, 307-311
            server-side PHP script to send images, 312-314
            working slide show using Ajax, 311
      sortable, 297-302
            Ajax and draggable lists, 302-304
            CSS styling rules, 300
            Dojo Toolkit, using, 301-302
            JavaScript to initialize and make functional, 300
      table of contents, 292-297
            CSS rules for numbering system, 296
            dynamically created with JavaScript, 293-295
      trees of lists used in navigation boxes, 231-235
            Zapatec DHTML Tree, 234
      use of XHTML lists in menus, 192
      used for navigation functionality, 291
      using XHTML lists in breadcrumbs, 222
      using XHTML lists in links at bottom of a page, 226
      using XHTML lists in tabs, 213
      vertical lists in navigation boxes, 235
load testing, 26
load( ) method, 79
loadMenu( ) function, 211
loadXML( ) method (Document), 79, 81
local variables, 828
logging errors, 420
      logError.php script, 427
      PHP constants, 410
Logic class
      circular collision testing, 760
      linear collision detection, 762
      rectangular collision testing, 755
logic.js file (game logic), 776-778
login (chat application example), 676-678
      JavaScript to check username validity, 676
      login.php file, 678
logout.php file (chat application), 686
look of an application (see visualization)
lookup table (LUT) of square root values, 760
Luhn Formula, 541, 543
Luhn, Hans Peter, 543

M[ Top ]
Ma.gnolia (bookmark service), 624, 902
Mac OS X, alert windows, 335
Macromedia
      Flash, 733
      Shockwave, 734
magnifiers, 157
mail client (Gmail), use of Ajax, 172
maintenance (software development), 23
manipulation methods (DOM), 110-112
<map> elements, 321
Map24 AJAX, 628, 902
mapping services, 627-631
      list of popular mapping services, 627
      mashups and, 661
            business opportunities, 671
      Yahoo! Maps, 628-631
            using GeoRSS feed, 630
      Yahoo! Maps AJAX API library, 628
MapPoint, 627, 903
MapQuest
      OpenAPI, 628, 902
      web site after Ajaxification, 7
      web site in classic web environment, 5-7
Markup Validation Service (W3C), 27
mashups, 658, 659-671
      application portlets, 668
      building, 668
            choosing a subject, 669
            coding the mashup, 671
            decisions regarding the backend, 670
            selecting data sources, 670
      business uses of, 671
      combining chat, file sharing, and whiteboard applications, 720
      data sources, 665-668
            public data, 665-667
      definition and brief history of, 659
      pitfalls and problems with, 661
            adding services just because you can, 662
            application clutter, 662
            cohesiveness of combined services, 663
            rebuilding something already built, 664
      in Web 2.0 applications, 659
      "What is a Mashup?" video on YouTube, 661
      what they can do, 664
massive multiplayer online role-playing games (MMORPGs), 730
Matsumoto, Yukihiro, 43
McClanahan, Craig, 60
media types (CSS), 800
menus, 154
      button and image navigation, 180-188
            buttons, 180-184
            image rollovers, 185-188
      drop-down, 188-191
      file menu, 192-212
            adding Ajax, 210
            JavaScript code for manipulating, 199-209
      navigation, 175-212
      simple navigation bar, 175-180
messages element (WSDL), 601
<meta> elements, 566
Meta Content Framework (MCF), 14
metadata
      GIF images, 436
      XML attributes, 845
MetaWeblog interface, 620
methods
      considerations in web application design, 25
      DOM table methods, 137
      event, 132
      informational DOM stylesheet methods, 126
      Internet Explorer differences from DOM 2 stylesheet methods, 127
MgmtAPI, 621
Microsoft
      adCenter, 902
      ASP/ASP.NET, 40
      browser wars with Netscape, 10
      Excel, 47
      MapPoint, 627, 903
      .NET Framework, 58
            built-in documentation capability, 26
      .NET Remoting to implement RPC, 596
      SQL Server, 45
            open source, Express Edition, 46
      Virtual Earth, 628
      Visual C# Developer Center, 27
      Visual Studio, 59
      Windows Live Search, 652
      (see also IIS; Internet Explorer; Windows systems)
MIME types
      compression based on, 814
      RSS and, 16
Miner, Wilson, 61
mixed content elements, 845
MMORPGs (massive multiplayer online role-playing games), 730
MNG (animated version of PNG), 439
MochiKit library, 886-889
      Ajax in (Deferred object), 886-889
      Async object, 886
model (data access) module, 30
model-view-controller (see MVC design pattern)
modular coding, 789-806
      client side, 791-803
            CSS, 795-802
            JavaScript, 802
            XHTML, 791-795
      defined, 789
      possible modularization in an Ajax application, 790
      server side, 804-806
            server-side components, 806
            SQL, 805
            using server side for structure, 804
modules
      basic three-tier web application, 29
      DOM specifications, 13
      Event, 129
modulus 10 algorithm, 543
moo.fx, 95
MooTools library, 877-880
      effects, 880
      form submission, 880
      making an Ajax request, 879
      simple server requests, 877
mouse click event handling added to character class, 749-753
mouse input (games), 766
MouseEvent module, 129
MouseEvents, image rollovers, 185
movement functionality added to character, 743-747
Mozilla browsers
      Gecko layout engine, 18
      JavaScript error properties, 409
MSDN
      Internet Explorer handling of stylesheets, 129
      Windows Live Search, 652
MSHTML (Trident), 18
MSN Messenger, 903
MSN Spaces, 620, 903
MUD (multiuser dungeon/dimension) games, 728
multidimensional databases, 47
multistable perception, 183
music and video services, 631-636
      list of some popular services, 632
      YouTube, 632-636
MutationEvent module, 130
MVC (model-view-controller) design pattern, 30
      incorporated into RIAs, 30
      Jakarta Struts framework, 60
      Ruby on Rails, 59
MySQL, 46
mysql_real_escape_string( ) function, 535, 557
Mystery House (adventure game), 727

N[ Top ]
name attribute
      <form> element, 490
      deprecation for certain elements in XHTML, 494
      document.frames[] array of elements, 322
      XHTML 1.0, 321
names (XML), 846
namespaces
      SOAP, 598
      XML, 846-848
            Atom 1.0 versus RSS 2.0, 16
navigation, 175-246
      general application layout and, 246
      lack of, 146
      lists used for, 291
      menus, 175-212
            button and image navigation, 180-188
            drop-down menus, 188-191
            file menu, 192-212
            function of, 154
            simple navigation bar, 175-180
      other navigation aids, 221-243
            accordion navigation, 236-239
            Ajax and page loading, 240-243
            breadcrumbs, 221-226
            links at bottom of a page, 226-228
            navigation boxes, 231-235
      paged, 228-231
      problems with Ajax navigation, 243-245
            bookmarks, 244
            browser back button, 245
      tabs, 212-221
            CSS tabs using XHTML lists, 213-215
            image tabs, 216-217
            tab content, 218-221
navigation boxes, 231-235
      vertical lists, using, 235
navigation windows, 347-355
      placing content into, 347-349
            information boxes, 348
      pop-up windows, 360-362
      replacing alerts, prompts, confirms, etc., 349-355
            confirmation window, 349-351
            larger forms, 353-355
            prompt window, 351-353
      tool tips, 355-360
Necker cube, 183
Nederlof, Peter, 188
.NET Framework, 41, 58
      architecture, 58
      assemblies, 59
.NET Remoting, 596
NETaccounts (financial accounting), 626, 904
Netscape browsers
      browser wars with Microsoft, 10
      layout engines, 18
network databases, 48
network stack, 816
news and weather services, 636-641
      list of some services, 637
      NewsIsFree, 637-641
NewsCloud, 637, 904
NewsGator, 637, 904
NewsIsFree, 637, 637-641, 905
      API functions for use with web service, 638
      getNews( ) request, results of, 639
      using SOAP and PHP to pull data from, 640
nodes
      appending by specifying a location, 109
      appending node to list of child nodes, 108
      methods used to create, 107
      referencing table nodes, 136
      standardized list of node types, 105
nodeType property, 113
<noframes> element, 318
Nonstandard Event module, 130

O[ Top ]
O(n log n) sorting algorithms, 268
O(n2) sorting algorithms, 268
O'Reilly, Tim, 661
OASIS (Organization for the Advancement of Structured Information Standards), 596
object databases, 48
object literals, 825
object manipulations (animation), 467-472
object positioning (Rico), 464
obscurity, avoiding in application design, 145
one-stop shops, 149
onFailure property, 277
onreadystatechange property (XMLHttpRequest), 69, 80
onSuccess property, 277
Open Group, 596
open source services, 668
OpenAJAX Alliance, 94
openPageInDIV( ) function (example), 326
openPopUp( ) function, 340
Opera browsers
      Presto layout engine, 19
      user changes, 363
operating systems
      alert windows, 335
      fonts, 163-166
      interoperable communication with SOAP, 597
optimization of Ajax applications, 807-839
      Ajax optimization, 838
            client and server communication, 838
            code optimization, 839
            data, 839
      client-side, 818-830
            JavaScript, 822-830
            XHTML and CSS, 819-822
      execution speed, 809
      file size, 808
      HTTP, 809-815
            compression, 813-815
            headers, 810-813
      packets, 815-818
            optimal sizes, 817
      server side, 830-838
            compression, 830-833
            SQL, 833-838
Optrata mashup, 662
Oracle, 45
      open source version, 10g Express Edition, 46
      web site, 45
organic layout, 158
Organization for the Advancement of Structured Information Standards (OASIS), 596
organizing tools, 155
overflow: hidden (CSS rule), 442

P[ Top ]
packets, 815-818
      optimal sizes, 817
            requests for JavaScript, CSS, and media files, 818
      TIP/IP, 808
page indexing, 569
page layout, 329-334
      dynamic nature of pages, 330
      separating structure from presentation, 333-334
page loading, status bar for Ajax, 240-243
page reloads, web pages in 2000, 7
paged navigation, 228-231
      Ajax solution, 230
      solution using DHTML techniques, 228
pagination, table, 283-291
      sorting paginated tables, 289-291
      using Ajax, 287-289
      using JavaScript, 285-287
palettes, 436
panels, 149
parallel lines, 763
ParseKeypress( ) function (example), 765
ParseMouseClicks( ) function (example), 766
parseResponse function, 100
parsers
      documentation, 27
      validating parsers, 27
parseStateToQueryString( ) function, 245
parseXML( ) function, 80
parsing JSON strings, 90
path between two points approximating a straight line, 748
pause time between frame switching, 442
PC Direct Source storefront, 161
PEAR modules, 63
pen colors (whiteboard), 715-718
People Finders, 666
people searches, 667
perception, 3D objects in 2D space, 183
PeriodicalUpdater object, 868
PeriodicUpdater object, 101
persistent stylesheets, 372
Personal Web Server (PWS), 36
PhishTank, 905
phone number reference service, 650
phone numbers, validating, 539
photo services, 641-649
      Flickr, 642-649
      list of popular APIs, 641
PHP, 39, 41
      adding a post programmatically to del.icio.us, 624-626
      adding compression to a site, 831
      base64_encode( ) function, 312
      calling FeedBurner MgmtAPI's Find Feeds method, 622
      chat client structure, 679
      checking on parameters, 556
      code to create a table for a server response, 277
      error and logging constants, 410
      error handler, custom, 411
      frameworks, 62
      full text site search, 568
      get_points.php file, sending whiteboard information to clients, 713
      handling a JSON request from the client, 88
      inline documentation, 27
      logError script, 427
      modular server-side components used to build page structure, 805
      mysql_real_escape_string( ) function, 535
      parsing <meta> elements on a site, 566
      preparing and sending search hints back to user, 579
      put_message.php file (chat application), 687
      REST request to AWS, 610
      script handling a RAW POST sent as XML, 526
      script handling an XML data request, 74
      script handling GET or POST from the client, 525
      script handling RAW POST as JSON, 526
      server-side script handling dynamic bar graph request, 477
      slide show application, script for Internet Explorer, 315
      slide show application, script sending pictures from server, 312-314
      SOAP request to AWS, 607
      SoapClient( ), 637
      using feeds to distrubute information, 615
      using to pull data from NewsIsFree, 640
      using with JSON, 87
phpDocumentor parser, 27
pictures (see images; photo services)
pipe character (|), separating lists, 226
Pixagogo, 642, 905
pixels (font sizing), 386
planning phase, Ajax web application development, 24
platform games, 731
plug-ins for browsers, 733
      Flash, 733
      Java applets, 734
      Shockwave, 734
PNG alpha-transparency, support by browser engines, 18
PNG image format, 437, 439-453
      alpha transparency, 439
      building animations with
            JavaScript looping, 442-444
            more robust animation object, 444-448
            PNG CSS, 441
            using Ajax, 448-453
      character animation, 735
      differences from GIF, 440
pop-up boxes
      building custom, 336
      CSS styling rules for alert window, 338
      dragging functionality, adding, 344-347
      keeping focus and closing, 339-343
pop-up windows, 360-362
      file sharing application, sending a file, 692
      list of features, 361
      user consent for, 361
      (see also navigation windows)
port types element (WSDL), 601
Portable Network Graphics (see PNG image format)
portlets, 668
ports element (WSDL), 601
position of an object, animating dynamically, 464-467
POST method (see GET and POST methods)
postfix incrementing operators, 830
PostgreSQL, 46
preferred stylesheets, 372
      font size, 389
presentation layer, separation from structure or data layer, 250
Presto, 19
      standards supported, 18
print files (CSS), units of measurement, 371
processing instructions (PIs) in XML, 849
product codes (UPC Database), 653, 909
professional licenses, 667
Programmable Web, 668, 892
programming languages
      compiled, optimization of, 807
      language for the backend, optimization and, 808
      object databases, 48
      selecting for mashup backend, 670
Progressive JPEG, support by browser engines, 18
project managers, prerequisites for this book, xiv
prompt window, 351-353
properties
      CSS2 and JavaScript equivalents, 119-124
      Event object, 132-133
      informational DOM stylesheet properties, 126
      informational properties (DOM), 114
      innerHTML, 138-140
      Internet Explorer alternatives to DOM 2 stylesheet, 127
      JavaScript errors, 409
      nodeType, 113
      traversal properties (DOM), 116
protocol stack, web services, 597
Prototype Framework, 95, 863-869
      $F( ) function, 496
      accordion object, 238
      Ajax response callbacks, 864
      Ajax with Prototype, 863
      automating requests, 868
      dynamic page updating, 867
      Element object, show( ) and hide( ) methods, 242
      evaluating JSON, 866
      event handling, 577
      Event object, pointerX( ) and PointerY( ) methods, 704
      events and event handling, 342
      global responders, 867
      helper functions, 98
      objects used with Ajax, 99-102
      passing parameters to HTTP method, 865
      use by Rico library as base, 460
      use in file menu example, 198
pseudoselectors, Internet Explorer and, 223
Public Record Finder, 666
public records, 666
      differences in availability from states, 666
puzzle games, 730
PWS (Personal Web Server), 36
Pythagorean theorem, 759
Python, 39, 42
      frameworks, 61

Q[ Top ]
query string, passing page number in, 228, 230
Quest for Glory game series, 727
quick sorts, 268
quote_smart( ) function, 687

R[ Top ]
Rademacher, Paul, 660
radio buttons
      custom, 499
            properties, 499
      form controls, 493
            setting error indicator to, 553
Rails (see Ruby on Rails)
RangeError object, 409
RAW POST method, 525
      PHP script handling as XML, 526
      script handling as JSON, 526
RDF Site Summary (RSS 0.9 and 1.0), 16
reading style for web content, 147
readyState property (xmlDoc), 80
readyState property (XMLHttpRequest), 69
      using in status bar, 242
real estate company, mashup for, 671
RealEDA Reverse Phone Lookup, 650, 905
Really Simple Syndication (RSS 2.0), 16
      (see also RSS)
real-time communication (see communication needs for business)
real-time strategy games, 724
receptivity to user feedback, 142
rectangular collision detection, 754-759
reference services, 650
ReferenceError object, 409
regular expressions, 538
      checking for valid email addreses, 540
      Dojo validation objects, 551
      phone number checks, 539
Rehabilitation Act, Section 508, 33
relational databases, 48-54
      creating tables, 48-51
      deleting records from a table, 53
      getting records from the database, 52
      implementation of dimensional databases, 47
      inserting records into tables, 51
      performance improvement with stored procedures, 54
      updating records, 53
relative font sizes, 386
release (software development), 23
reloading web pages, classic web sites, 7
Remote Procedure Call (RPC), 595
removeChild( ) method, 110
removeEventListener( ) method, 131
repositioning objects and storing the positions, 403-407
      dragging objects, 403
      storing information in a database, 404
Representational State Transfer (see REST)
Request Entity Too Large error, 421
requirements analysis, 23
      Ajax web application development, 24
residential information in the U.S. and Puerto Rico, 651
Resig, John, 96
resolution testing, 26
Responders object, 867
<response> elements
      code attribute, 612
response headers (HTTP), 810
response to search query, 590
responseText property (XMLHttpRequest), 69
responseXML property (XMLHTTPRequest), 76
responseXML property (XMLHttpRequest), 69, 78
REST (Representational State Transfer), 604
      eBay API, 653
            requesting search results, 654
      example request to Flickr web service, 648
      Flickr request and response, 642
      request to AWS, 609
      triangle of nouns, verbs, and content types, 605
RESTful design, 605
Result objects (Google AJAX Search API), 587
      CSS classes for each object, 592
Results objects (Google AJAX Search API)
      CSS styling structures, listed, 592
reusability (web applications), 142
Rhapsody, 632, 906
RIAs (Rich Internet Applications), 30
Rich Site Summary (RSS 0.91 and 1.0), 16
Rico, 97
Rico library
      animating an element on the page, 466
      dragging and dropping capabilities, 460
      object positioning through Effect object, 464
      reference, 875
role-playing games (RPGs), 728-730
      massive multiplayer online RPGs (MMORPGs), 730
root element or root node, 104
rows collection, 136
RPC (Remote Procedure Call), 595
RSS, 614
      differences between Atom 1.0 and RSS 2.0, 16
      feed results of getNews( ) request on NewsIsFree, 639
      feed used to create REST web service, 615
      feed validation, 616
      GeoRSS feed, 630
      standards and versions, 15
      support by browser engines, 18
      version 2.0, 15
Ruby, 39, 43
Ruby on Rails (RoR or Rails), 59
rule of thirds, 163
rules collection (Internet Explorer), 128

S[ Top ]
Safari browsers, WebCore layout engine, 18
sans-serif fonts, 162
Sarissa library, 97, 884-885
      Ajax requests, 884
      parsing data from the server, 885
      web site, 83
      XML, 885
      XSLT transformation with, 84-86
scraping data for web feeds, 613
screen descriptor (GIF), 435
screen files (CSS), units of measurement, 371
screen.css file, 369
<script> elements needed to use Rico, 466
script.aculo.us, 95, 869-875
      auto-completion, 869-872
      components, 802
      Draggable object, 344-345, 403
      dragging and dropping functionality, 455-457
      Effect object, 238
      effects, 467, 875
            online demonstration, 468
      inline editing, 873-875
      organic site layout, 159
      sortable list, integrating Ajax, 303
      sorting lists via drag-and-drop solution, 298
scripting languages, 39
      server scripting errors, 410
      used for ASP, 40
search engines, 154, 565
      problems with sites using Ajax, 921
      use of databases, 570
      using on a local site, 570-575
searches, 565-593
      dynamic searching with Ajax, 577-581
            giving hints to the user, 577-580
            submitting a search from hints, 580
      Googling a site, 581-593
      search services, 651
      types of site searches, 565-576
            advanced searching, 576
            full text parsing, 568
            keyword searches, 566
            page indexing, 569
            using public search engines on local sites, 570-575
      web application search tools, 151
Section 508 of the Rehabilitation Act, 33
security, risks associated with use of Ajax, 919-921
SeeqPod (music service), 632, 906
<select> elements, placement of labels, 485
SELECT statements (SQL), 52
selectNodes( ) method, 83
selectSingleNode( ) method, 83
serialize( ) method, 86
serif fonts, 162
server responses, 531-533
      example of client handling complex response, 532
      reporting success or failure, 531
Server Side Include (SSI), 38
server side of Ajax applications, 804-806
      breaking into components and modularizing, 806
      modularizing SQL, 805
      optimizations, 830-838
            compression, 830-833
            SQL, 833-838
      using for structure, 804
server-side errors, 410-413
      database, 412
      external errors, 413
      notifying the user, 419
      server scripting errors, 410-412
server-side scripting, 28, 39-44
      ASP/ASP.NET, 40
      handling dynamic bar graph request (fa_stats.php), 477
      Java, 43
      logging errors, 427
      PHP, 41
      Python, 42
      Ruby, 43
      to web services, 607-610
Service Description level (web services), 597
Service Discovery level (web services), 597
Service Messaging level (web services), 597
Service Transport level (web services), 597
Service-Oriented Architecture (SOA), 596
services element (WSDL), 601
servlets (Java), 38, 44
setAttributeNode( ) method, 107
setDragTarget( ) method, 458
setSiteRestriction( ) method (GwebSearch), 586
shapes, drawing for whiteboard, 719
Shea, Dave, 332
shell sorts, 268
Ship, Howard M. Lewis, 61
Shockwave, 734
shopping carts, 155
shopping services, 652-655
      eBay, 653-655
.shtml file extension, 38
SimCity, 725
simple path movement, 747
simple to use applications, 142
Simpy (bookmarking service), 623, 906
slang dictionary, 650, 910
Slashdot, paneled design pattern, 149
slide show application, 304-315
      Ajax-enabled, in action, 314
      CSS styling rules, 305-307
      JavaScript code, 307-311
      server-side PHP script to send images, 312-314
      working slide show using Ajax, 311
slideBy( ) method, 465
slider bar for font sizes, 389-392
slideTo( ) method, 465
sliding an element around on the page, 464
Smarty, 63
SmugMug, 641, 907
Snipshot, 642, 907
SOA (Service-Oriented Architecture), 596
SOAP, 597
      request to AWS using PHP, 607
      request to NewsIsFree, 637
      using to pull data from NewsIsFree, 640
Social Security numbers, validating, 540
software development life cycle, 22-24
      simplification for web applications, 24
Sortable object, 298
      create( ) method, options to pass in object parameter, 298
      onUpdate callback, 303
sorting
      lists, 297-302
      tables, 264-279
            JavaScript versus Ajax sorting, 279
            JavaScript, using, 264-275
            keeping style with sorts, 280-283
            paginated tables, 289-291
            using Ajax, 275-279
sorting algorithms, 268-269
Sowden, Paul, 372
spacing, text, 166
spellcheckers, 157
spider performing a full text search, 569
spreadsheets, 157
Spring framework, 60
SQL (Structured Query Language)
      CREATE TABLE statement, 49
      DELETE statement, 53
      INSERT statement, 51
      Microsoft SQL Server, 45
      modularizing in server-side coding, 805
      optimization, 809, 833-838
            inline queries, 834-837
            stored procedures, 837
      origin of, 45
      retrieving and storing information for draggable object, 404
      SELECT statements, 52
      stored procedures, 54
      UPDATE statements, 53
SQL injection attack, 535
      function dealing with quotes, 687
square collision detection, 754
SRC Demographics, 650, 907
SSI (Server Side Include), 38
      ASP (Active Server Pages), 40
stamps for whiteboard application, 719
standards organizations, 10
standards, compliance with, 19
      (see also web standards)
static directions (character movement), 742
status bar, showing Ajax actions, 242
Status object, 242
status property (XMLHttpRequest), 69
statusText property (XMLHttpRequest), 69
Stenhouse, Mike, 244
storage engines (MySQL), 46
stored procedures, 54, 805, 837
storing information, 155
      desktop application tools, 157
straight line between two points, 748
strategy games, 724-726
      abstract, 724
      real-time, 724
      turn-based, economic, and God-like, 725
stress testing, 26
StrikeIron Historical Stock Quotes, 626, 907
StrikeIron Residential Lookup, 651, 908
StrikeIron U.S. Census, 651, 908
string indexing, 569
structure, abstracting to wrappers or containers, 330
structure.css file, 369
structured applications, 142
Structured Query Language (see SQL)
structures (design), 25, 148
Struts framework, 60
style properties (CSS), 796-800
styles, 117-129
      CSS rule types, 117
      importNode( ) function that registers styles, 327-329
      information about, 126
      Internet Explorer and, 127
      modifying and removing style, 118
            stylesheet manipulation methods, 118
      (see also CSS)
stylesheets
      changing page style in browsers, 364-366
            user-defined stylesheets, 364
      switching, 368-385
            alternate stylesheets, 371
            creating the stylesheets, 368-371
            multiple customizations, 381-385
            rembering user selection, 375-381
            simple style-switching object, 372-375
      XSLT, 855
      (see also CSS)
StyleSwitcher class (example), 381-385
      modifying for color theme switches, 393-397
Submit button (form), 520
      onclick event attached, 520
success/failure response, 531
Sunlight Labs, 656, 908
Suraski, Zeev, 41
SVG (Scalable Vector Graphics), 467
      support by browser engines, 18
symbols used for web application icons, 167
syndication, 14, 613
      Atom, 16
      RSS, 15
      support by browser engines, 18
      using syndicated web feed to create web services, 613-617
SyntaxError object, 409

T[ Top ]
tabindex attribute (<input>), 488
table of contents, 292-297
      CSS rules for numbering system, 296
      JavaScript function dynamically creating list used as, 293-295
table pagination, 283-291
      Ajax, 287-289
      sorting paginated tables, 289-291
      using JavaScript, 285-287
tables, 135-138, 247-283
      accessible, 252-258
      Ajax and, 263
      components of, 135
      DOM table methods, 137
      interacting with, 258-263
            dynamically creating tables, 258-262
            updating content in a row, 262
      layout using CSS instead of, 250-252
      problems with, 248
      sorting, 264-279
            JavaScript versus Ajax sorting, 279
            JavaScript, using, 264-275
            keeping style with sorts, 280-283
            using Ajax, 275-279
      use for page layout, 247-250
            old layouts, 248
tabs, 212-221
      content of, 218-221
            JavaScript code for dynamic content, 219-221
      CSS tabs using XHTML lists, 213-215
            creating illusion of depth, 215
      image tabs, 216-217
            XHTML structure, 216
tags, XML, 845
Tapestry framework, 61
target attribute (HTML), 694
target audience
      geared toward a specific technology, 33
      web application design and, 25
<tbody> elements, 261
      sorting in a table, 270
TCP/IP packet size, 808
Technorati web service, 621, 909
telephone numbers, lookup service, 650
testing (software development), 23
testing and release phase, Ajax web application development, 26
text
      color contrast with background, 166
      commanding attention to, 166
      fonts in web applications, 162-167
      spacing of, 166
text boxes (form controls), 493
text editors, 156
text element or text node, 104
Text node, creating, 107
<textarea> elements
      focus( ), blur( ), and select( ) methods, 493
      images, 487
three-tier (basic) design pattern, 29
throw statement, 415
title attribute, alternative stylesheet links, 372
tolerance of user mistakes and abuse, 142
tool tips, 355-360
      code for customizable tool-tip object, 355-359
      modifications for Ajax functionality, 359
toolkits, 453
tools
      common web application tools, 153-155
      desktop applications, 156
      determining tools needed for web application, 157
      porting desktop application tools to web applications, 158
Total Annihilation (strategy game), 724
Transact-SQL (T-SQL), 45
transforming or formatting XML documents (see XSLT)
transparency
      alpha transparency, 438
      GIF images, 437
transport type for mashup backend, 670
traversal methods (DOM), 116
traversal properties (DOM), 116
trees
      of lists used in navigation boxes, 231-235
            vertical lists, 235
            Zapatec DHTML Tree, 234
      web application design pattern, 149
Trident browser engine, 18
true color
      images in GIF file format, 438
      support by PNG format, 440
try...catch...finally block, 414
turn-based games, 725
turnDataPage( ) function, 285
      revised for Ajax, 287
turnPage( ) function, 229, 240
      altering to call XMLHttpRequest, 230
TypeError object, 409
TypePad (blog service), 620, 909
types element (WSDL), 601

U[ Top ]
U. S. census information, 650, 908
U.S. Congress information service, 656, 908
U.S. government web applications, 33
U.S. Postal Service, 910
UDDI (Universal Discovery, Description, and Integration), 604
UIEvent module, 129
Unicode, 851
Unique URLs design pattern, 244
units of measure
      CSS screen and print files, 371
      font sizes, 386
Universal Discovery, Description, and Integration (UDDI), 604
UPC Database, 653, 909
UPDATE statements (SQL), 53
Updater object, 101, 867
upgrades (software development), 23
UPS, 909
Urban Dictionary, 650, 910
URIError object, 409
URIs, resources accessed from HTTP, 605
URLs
      browser bookmarks, 244
      unique URL for browser back button, 245
UrlTrends, 910
usability, 141-153
      common design mistakes, 142-147
            bloat, 143
            expecting too much from end users, 147
            lack of navigation, 146
            obscurity, 145
            poor focus, 144
            reading style for web content, 147
      design principles, 148-153
            consistency, 150
            documentation and help, 152
            feedback, 152
            flexibility and efficiency, 150
            minimal and aesthetic structure, 148-150
            navigation, 151
      forms, 488
user input (games), 764-766
      event handling, 767
      keyboard input, 765
      mouse input, 766
user interface (UI) layer, 804
user-defined stylesheets, 364
username validation, 676
users
      enabling to provide feedback for errors, 428-432
      notifying of errors, 418
Utils.Draggable( ) method (Zapatec), 463
      optional properties to define draggable element, 463

V[ Top ]
validate object (Dojo), 549-551
validate.us object (Dojo), 551
validation
      form data (see data validation)
      testing phase, web appplication development, 26
      username (chat example), 676
ValidationTextbox object, 516
validators, 28
      for feeds, 617
validity (XML), 853
value checking
      client-side, using JavaScript, 537
      on the server, 557
van Rossum, Guido, 42
var keyword, 743
variables
      defining multiple with single var statement, 828
      JavaScript execution speed and, 826
VBScript, 40
vertical lists, 235
video services (see music and video services)
view module, 30
Virtual Earth, 628, 911
visibility of windowed elements, 346
Visual C# Developer Center, 27
Visual Studio, 59
visualization, 158-167
      application layout, 158-162
      commanding attention to text, 166
      fonts, 162-167
            color contrasts, 166
            font families and their types, 163-166
      images and icons, 167
      text spacing, 166

W[ Top ]
W3C, 10
      CSS (Cascading Style Sheets) specifications, 14
      DOM Technical Reports web page, 13
      Geo (WGS84 lat/long) Vocabulary, 630
      SOAP Version 1.2 Recommendation, 597
      standardized list of DOM node types, 104
      validators, 27
      Web Accessibility Initiative (WAI), 168
      web services definition, 594
      WSDL (Web Services Description Language), 599
      XHTML 2.0 Recommendation, 483
      XHTML family of recommendations, web site information, 11
      XSL family of Recommendations, 17
WAI (Web Accessibility Initiative), 168
WAI-WCAG 1.0 guidelines
      avoiding deprecated features of technologies, 321
      avoiding tables for layout whenever possible, 252
      general site layout (table of contents), 297
      header elements, 292
      labels and form controls, 486
      lists, 291
      pop-up windows, 362
      relative font sizes, 387
      searching capabilities, 576
walking loop (character animation), 735-742
Wayback Machine
      Amp main page, 144
      Cyber-Safari Internet Cafe site, 329
WCAG 1.0 (Web Content Accessibility Guidelines 1.0), 168
weather services, 911
      example using Yahoo! Weather feeds to create a service, 614-617
      WeatherBug, 637
      Yahoo! Weather feed, 614
      (see also news and weather services)
Web 2.0, 20
      interaction between user and web application, 363
      mashups in applications, 659
Web Accessibility Initiative (WAI), 168
Web AIM, 912
web application development, 22-34
      application environments, 31-33
            commercial, 32
            educational, 32
            government, 33
            intranet, 31
            specific content, 33
      design patterns, 28-31
            basic three-tier, 29
            client/server, 28
            MVC (model-view-controller), 30
            RIAs (Rich Internet Applications), 30
      design phase, 25
      developers, requirements for, 33
      implementation phase, 26
      planning phase, 24
      software development life cycle, 22-24
      testing and release phase, 26
      what Ajax is not, 34
      (see also interfaces, designing)
web containers, 38
Web Content Accessibility Guidelines (WGAC)
      web application development issues, 25
Web Content Accessibility Guidelines 1.0 (WCAG 1.0), 168
Web Design Group (WDG), validators, 28
web developers, prerequisites for this book, xiv
web feeds, 613-617
      syndication, 613-617
      validation of feeds, 616
Web Hypertext Application Technology Working Group (WHATWG), 12
web page components, 3-9
      Ajax, 4
      case study of classic versus Ajax web site, 5
      classic, 4
web page for this book, xix
web servers, 36-39
      Apache HTTP Server and IIS, 36
      CGI (Common Gateway Interface), 37
      FastCGI, 37
      servlets, 38
      SSI (Server Side Include), 38
Web Service List, 668
web services, 594-618
      Ajax and, 606-612
            client requests for web services, 606
            gathering AWS response and formatting for the client, 610
            sending web service response, 612
            server-side scripting to services, 607-610
      APIs, 618, 619-658
            Ajax and, 657
            blogging services, 620-623
            bookmark services, 623-626
            financial services, 626
            mapping services, 627-631
            music and video services, 631-636
            news and weather services, 636-641
            other services, 656
            photo services, 641-649
            reference, 892-915
            reference services, 650
            search services, 651
            shopping services, 652-655
      architectures, 594-606
            REST protocol, 604
            RPC (Remote Procedure Call), 595
            SOA (Service-Oriented Architecture), 596
            SOAP standard, 597
            UDDI protocol, 604
            WSDL protocol, 599-604
      defined, 594
      listings of available services on the Internet, 668
      next step, 658
      programming, books about, 670
      protocol stack, 597
      using web feeds to create services, 613-617
      (see also mashups)
Web Services Description Language (see WSDL)
web sites, enhancing to become true applications, xiii
web standards, 9-17
      CSS (Cascading Style Sheets), 13
      DOM (Document Object Model), 13
      JavaScript, 12
      support by browser engines, 17
      syndication, 14
            Atom, 16
            RSS, 15
      XHTML, 10
      XML, 14
      XSLT and XPath, 17
WebEx (chat application), 675
Weblogs.com, 621, 912
Webmashup.com, 668
WebserviceX.NET, 668
well-formed XML documents, 848
What You See Is What You Get (see WYSIWYG)
WHATWG (Web Hypertext Application Technology Working Group), 12
whiteboards, 703-719
      collecting mouse movements for drawing on the board, 704
      communication, 707-714
            collecting points to send to server, 708-709
            drawing on other boards, 711-714
            sending mouse movements, 709-711
      drawing on the board, 706
      enhancements
            pen colors, 715-718
            predefined stamps and shapes, 719
      JavaScript code to build a whiteboard, 704
      library to add drawing functionality, 704
whitespace, 819
      controlling density in application layout, 161
      directing attention to application focal point, 161
      removing from JavaScript code, 822
      removing from XHTML and CSS files, 819
widgets
      available to HtmlWidget object, 515
      available to ValidationTextbox object, 516
Wikipedia, 155, 650
wikis, 149
Williams, Ken and Roberta, 727
Willison, Simon, 61
window object, open( ) method, 361
window.location.hash, 245
window.location.href, pop-up windows, 362
windowed elements, toggling visibility, 346
Windows Live Custom Domains, 656, 912
Windows Live ID Client SDK, 912
Windows Live Search, 652, 913
Windows systems
      alert windows, 335
      errors, 418
windows, opening new windows without target attribute, 694
Wizardry: Proving Grounds of the Mad Overlord (FPS game), 722
wizards, 148
Wordtracker, 913
World of Warcraft, 730
World Wide Web Consortium (see W3C)
World Wide Web, example of RESTful implementation, 605
wrappers, objects on web pages, 330
WSDL (Web Services Description Language), 599-604
      AWS WSDL document (example), 601-604
      elements in WSDL documents, 599-601
WYSIWYG (What You See Is What You Get)
      editors, 156
      software generating code for old browsers, 10
wz_dragdrop.js library, 460-463

X[ Top ]
XForms, 483
XFrames, 321
XHTML, 5
      Ajax chat client (example), 679
      chapter markup (example), 292
      closing a pop-up window, 339
      Dojo form widgets, 517
      filemenu.html (example), 192-195
      forms, 482-490
            form elements, 482-484
      frames and, 321-323
            deprecation of frames and iframes, 321
            if frames must be used, 322
            using iframes as frames, 322
            Version 1.0 Frameset DTD, 316
      lists (see lists)
XHTML (continued)
      modularity of files, 791-795
            page components, 791-793
            smaller pieces for body of a page, 793-795
      optimizations, 819-822
            removing comments from files, 819
            removing unnecessary whitespace, 819
            shortening class and id names, 821
      produced by ASP.NET, 40
      server response, client handling of, 532
      simple document (example), 103
      slide show list, 305
      specifications, 10
      support by browser engines, 18
      tables, 135-138
      tables, building, 252
      version 1.0, 10
      version 1.1, 10
      version 2.0 draft specification, 11
XML, 5, 843-854
      anatomy of a document, 844-854
            character encodings, 851
            character references, 851
            comments and processing instructions, 849
            DTDs, 853
            elements and attributes, 845
            entity references, 849
            name syntax, 846
            namespaces, 846-848
            validity, 853
            well formed, 848
      data passed with POST and GET requests, 72
      documentation comments in C#, 27
      handling an XML data request, 74
      JSON versus, 92-94
      response document for AWS request, 610
      REST request to AWS, 609
      Sarissa library capabilities, 885
      search query response passed to client, 590
      server handling RAW POST as, 526
      SOAP, 597
      specifications, 14
      string, loading into a Document object, 79-82
      support by browser engines, 18
      use in web services, 594
XML Link, 609
      options, 609
XML Scratch Pad, 609
xmlDoc object, parsing, 80
XMLHttpRequest object, 68
      calling Prototype Ajax.Request, parseResponse function with, 99
      calling with turnPage( ) function, 230
      creating a request function, 71
      creating dynamic breadcrumbs, 226
      creating in cross-browser manner, 70
      creating XML requests and responses, 71
      handling the server response, 76
      methods, 69
      properties, 69
      responseXML property, 78
      web services and, 657
XML-RPC, 596
XPath, 17, 82-84
      support by browser engines, 18
XSLT, 5, 84-86, 854-862
      elements, 856-861
      history of, 855
      specifications, 17
      stylesheets, 855
      support by browser engines, 18
      using functions, 861
XSLTProcessor object, 86

Y[ Top ]
Yahoo! Maps, 627, 628-631
      AJAX API library, 628
      using GeoRSS feed, 630
Yahoo! Search, 652
Yahoo! UI, 97
Yahoo! Weather, 614
Yahoo! web services APIs, reference, 913
YouTube, 632, 632-636, 915
      errors returned by, 633
      methods available for use with API, 633
      parsing response and putting results into XHTML application, 635
      request using youtube.videos.list_featured method, 634
      response to request, 634
      "What is a Mashup?" video, 661

Z[ Top ]
Z Object Publishing Environment (Zope), 62
Zapatec DHTML Tree, 234
      creating a vertical list, 235
Zapatec library
      dragging and dropping capabilities, 463
      Effects library, 470-472
      form classes, 518-519
Zen Garden site (CSS), 332
      separating structure from presentation, 333-334
Zend engine (PHP), 41
Zend Framework, 63
      protecting a query from SQL injection attack, 536
z-index properties, 345
      <iframe> element and, 347
Zoop framework, 63
Zope framework, 62
Zorn, Walter
      High Performance JavaScript Vector Graphics Library, 472
      jsGraphics library, 704
      wz_dragdrop.js library, 460-463





Return to Ajax: The Definitive Guide