abort( ) method, XMLHttpRequest object, 19
Accesskey Underlining Library (AUL), 348
account-editing component, trouble-ticketing systems, creating, 308-310
actions
feedback, providing for, 122
undoing, providing, 123
ActiveX, 5
addEventListener( ) method, XMLHttpRequest object, 19
AJAX (Asynchronous JavaScript and XML), 4-5
communication flow, 6
Flash, combining, 115-116
Implementation, goals, 100-107
Improvements, measuring, 107-115
integration, 89-91
complexity issues, 88-89
development cycles, 78-85
Firefox counters, 95-97
frameworks, 86-87
intranet Web sites, 97
Open Source libraries, 91-95
interactivity, increasing, 100-103
mainstream acceptance, 12
remote scripting, 9
request flow, 5-7
technologies, 7-9
AJAX requests, making, Sarissa, 169-170
AJAX Toolbox, 334
AJAX viewers, building, 234-246
Ajax.NET, 343
AjaxAC, 340
AjaxTags, 342
Anthem.NET, 344
API documentationSarissa, 181
Appear (scriptacalous), 183
append method (HTML_AJAX), 199
applications
AJAX applications
MVC applications, compared, 329-330
security issues, 328
rich applications, creating, 106-107
assign-tickets component, trouble-ticketing systems, creating, 323-325, 327-328
Asynchronous JavaScript and XML. See AJAX
asynchronous requests, sending, XMLHttpRequest object, 23-24, 27-28
Atlas, 344
AUL (Accesskey Underlining Library), 348
Autocompleter (scriptaculous), 193
Autosave, undo operations, preventing with, 129
back ends, trouble-ticketing systems
creating, 275-280
bandwidth uses, reducing, 105-106
Behavior library, 348
BlindUp (scriptacalous), 182
blogs
comments, login forms, 256-262
logins
adding, 250-251
building, 250-262
XML implementation, 262-269
bookmarking, breaking, page loads, 133-134
breaking bookmarking, page loads, 133-134
C#/.NET, 343-344
client-side music management systems, 83
code, debugging, 138-139
communications, 139-143, 145-156
Fiddler HTTP debugging proxy, 151-156
Firebug, 144-151
JavaScript dumping variables, 161-162
JavaScript exceptions, 160-161
JavaScript tools, 156-159
comments, blogs
login forms, 256-262
logins, 250-269
communication layer
cookies, 36-39
IFrames, 29-36
XMLHttpRequest object, 16-17
abort( ) method, 19
addEventListener( ) method, 19
asynchronous requests, 23-24, 27-28
cross-browser creation, 21-23
getAllRequestHeaders( ) method, 19
getRequestHeader( ) method, 19
open( ) method, 17
overrideMimeType( ) method, 19
properties, 20-21
readyState variable, 20-21
removeEventListener( ) method, 19
send( ) method, 17
setRequestHeader( ) method, 18
communications, AJAX, 139-156
cookies, 16
sent data
document-centric consumption, 42-54
remote scripting, 54-74
CPAINT, 345
cross-broswer creation, XMLHttpRequest object, 21-23
cssQuery( ) method, 348
custom XML schemas, RPC, 66-72
data displays, speeding up, 218-232
with AJAX, 234-246
Dean Edwards IE7
library, 349
debugging, 138-139
communications, 139-156
Fiddler HTTP debugging proxy, 151-156
Firebug, 144-151
JavaScript dumping variables, 161-162
JavaScript exceptions, 160-161
JavaScript tools, 156-159
loggers
adding, 143-144
building, 139-142
development
AJAX
complexity issues, 88-89
Firefox counters, 95-97
intranet Web sites, 97
library, 89-91
Open Source libraries, 91-95
HTML_AJAX, 214
Sarissa, 181
scriptaculous, 192
development cycles, changes to, 78-85
development languages, JavaScript as primary development language, 87-88
DHTML (dynamic HTML) libraries, 117, 348-351
dialogs, Script Debugging error dialog, 158
Direct Web Remoting (DWR), 342
disappearing messages, creating, 296-297
document-centric data consumption, 42-54
DOM, 45-49
XSLT, 50-54
Dojo Toolkit, 334
DOM
documents, 171-174
JavaScript Behaviors, 210-211
XML data consumption, 45-49
DOM-Drag, 349
downloading
Sarissa, 169
scriptaculous, 182
drag-and-drop operations, scriptaculous, 185-186
dumping variables, JavaScript, 161-162
DWR (Direct Web Remoting), 342
dynamic HTML (DHTML) libraries, 117, 348-351
efficiency, Web sites, 120
encloseInScript utility method (PHP), 213
error icon (Firebug), 146
error selector (Firebug), 146
errors, Web sites, 121
eval statement (JavaScript), 8
exceptions, JavaScript, 160-161
exportation, trouble-ticketing system back ends, 282-288
Extensible Application Markup Language (XAML), 116
eXtensible Stylesheet Language Transformations. See XSLT
feedback, actions, providing for, 122
feedback messages, Gmail, 11-12
Fiddler HTTP debugging proxy, 151-156
Headers view, 155
main interface, 153
session inspector interface, 154
TextView view, 156
Firebug, 144-151
error icon, 146
error selector, 146
JavaScript commands, running, 150
Firebug (status icon), 147
Firefox counters, 95-97
form POST, mimicking, RPC, 60-63
form-loading status, providing, 298
forms
IFrames, creating, 32
login forms, extending, 256-262
formSubmit method (HTML_AJAX), 200
framework, AJAX, integration into, 86-87
functional tests, scriptaculous, 192
functions
scriptaculous, documentation, 192
startLoad, 238-239
General Public License (GPL) software, 93
getAllRequestHeaders( ) method, XMLHttpRequest object, 19
getElementsByClassName utility method (JavaScript), 213
getRequestHeader( ) method, XMLHttpRequest object, 19
ghosting property (scriptaculous), 187
feedback messages, 11-12
loading indicator, 11
interface, 10
goals, AJAX implementation, 100-107
Google Suggest application, 100-101
Google Web Toolkit, 343
GPL (General Public License) software, 93
grab method (HTML_AJAX), 199
graph.php, Sun Rise and Set data viewer, 228
graphics, SVG (Scalable Vector Graphics), 116
Headers view (Fiddler), 155
hidden IFrames, creating, 31
hide/show pairs, scriptaculous, 183-184
horizontal mode (scriptaculous slider control), 189-190
Hotmail, 4
HTML content, pages, adding to, 42-45
development, 214
HTML_AJAX_Action code, 197, 208-210
initMethod functionality, 214
installing, 197-198
JavaScript API, 196-205
JavaScript Behaviors, 210-211
JavaScript utility methods, 211-213
mapped PHP classes' API, 197
PHP utility methods, 213
remote stub AJAX, 205-208
serialization classes, 214
wiki, 214
HTML_AJAX_Action code, 197, 208-210
HttpClient XMLHttpRequest wrapper class, 24, 27-28
IFrames, 29
forms, creating, 32
hidden IFrames, creating, 31
requests, sending, 31-36
sent data
document-centric consumption, 42-54
remote scripting, 54-74
implementation, AJAX, goals, 100-107
improvements, AJAX, measuring, 107-115
inline editing, 104-105
InPlaceEditor (scriptaculous), 193
installation
HTML_AJAX, 197-198
Sarissa, 169
scriptaculous, 182
integration, AJAX, 89-91
complexity issues, 88-89
development cycles, 78-85
Firefox counters, 95-97
frameworks, 86-87
intranet Web sites, 97
Open Source libraries, 91-95
interactivity, increasing, 100-103
intranet Web sites, developing, 97
ISO (International Organization for Standardization), usability definition, 120
iTunes, 83
Java, 5
JavaScript, 5
as primary development language, 87-88
debugging tools, 156-159
dumping variables, 161-162
eval statement, 8
exceptions, 160-161
Firefox Console, 157
IFrames, 29-36
JSON, 72-74
libraries
AjaxTags, 342
DHTML libraries, 348-351
DWR (Direct Web Remoting), 342
Google Web Toolkit, 343
ZK, 343
remote scripting, 9
utility methods, 211-213
XMLHttpRequest object, 16-17
abort( ) method, 19
addEventListener( ) method, 19
asynchronous requests, 23-24, 27-28
cross-browser creation, 21-23
getAllRequestHeaders( ) method, 19
getRequestHeader( ) method, 19
open( ) method, 17
overrideMimeType( ) method, 19
properties, 20-21
readyState variable, 20-21
removeEventListener( ) method, 19
send( ) method, 17
setRequestHeader( ) method, 18
JavaScript API, HTML_AJAX, 196-205
append method, 199
formSubmit method, 200
grab method, 199
properties, 200-205
replace method, 199
stub class, 205-208
JavaScript Behaviors, 210-211
JavaScript commands, running, Firebug, 150
JavaScript shell, 349
JavaScript trouble-ticketing systems, building, 288-299
JPSpan library, 94
JSON, 72-74
jsonEncode utility method (PHP), 213
learnability, Web sites, 120
LGPL (Library General Public License), 196
libraries, 168
advantages of, 89-90
AJAX, 7-9
AJAX Toolbox, 334
Ajax.NET, 343
AjaxAC, 340
AjaxTags, 342
Anthem.NET, 344
Atlas, 344
AUL (Accesskey Underlining Library), 348
Bajax, 334
Behavior, 348
building, 91
CPAINT, 345
cssQuery( ) method, 348
Dean Edwards IE7, 349
Dojo Toolkit, 334
DOM-Drag, 349
DWR (Direct Web Remoting), 342
Google Web Toolkit, 343
development, 214
HTML_AJAX_Action code, 197, 208-210
installing, 197-198
JavaScript API, 196-205
JavaScript Behaviors, 210-211
JavaScript utility methods, 211-213
mapped PHP classes' API, 197
PHP utility methods, 213
remote stub AJAX, 205, 207-208
JavaScript shell, 349
JPSpan library, 94
LGPL (Library General Public License), 196
libXmlRequest, 335
Lightbox JS, 350
MagicAJAX.NET, 344
Mochikit, 335
Moo.fx, 350
Nifty Corners Cube, 350
OO (object-oriented) design, 94
Open Source libraries, 91-95
overLIB, 351
PAJAJ, 340
Qooxdoo, 336
Rialto, 345
Rico, 335
SACK (Simple AJAX Code-Kit), 336
SAJAX, 346
Sarissa, 169
AJAX requests, 169-170
API documentation, 181
development, 181
DOM documents, 171-174
downloading, 169
installing, 169
mixing, 181
sarissa_ieemu_xpath.js file, 181
sarissa_ieemu_xslt.js file, 181
test cases, 181
XML features, 171
XML string-loading capabilities, 181
scriptaculous, 181
Autocompleter, 193
development, 192
downloading, 182
drag and drop operations, 185-186
function documentation, 192
functional tests, 192
hide/show pairs, 183-184
InPlaceEditor, 193
installing, 182
prepackaged effects and components, 192
slider control, 189-192
sortables, 187-189
visual effects, 182
Sorttable, 351
ThyAPI, 336
TinyAjax, 341
Tooltip.js, 351
WZ_dragdrop, 352
WZ_jsgraphics, 352
Xajax, 341
XHConn, 337
XOAD, 341
Yahoo! User Interface Library, 337
ZK, 343
Library General Public License (LGPL), 196
libXmlRequest, 335
licensing, GPL-licensed software, 93
Lightbox JS, 350
loading DOM documents from a string, 171-172
loading datasets, speeding up, 218-232
with AJAX, 234-246
loading indicator (Gmail), 11
loading pages, bookmarks, breaking, 133-134
loggers
adding, 143-144
building, 139-142
login forms, extending, 256-262
logins
trouble-ticketing systems, creating, 299-305
Web logs
adding to, 250-262
XML implementation, 262-269
MagicAJAX.NET, 344
manually creating DOM documents, 173-174
mapped PHP classes' API, HTML_AJAX, 197
memorability, Web sites, 121
messages, disappearing messages, creating, 296-297
methods
abort( ), 19
addEventListener( ), 19
cssQuery( ), 348
getAllRequestHeaders( ), 19
getRequestHeader( ), 19
HTML_AJAX, 199-200
JavaScript, utility methods, 211-213
open( ), 17
overrideMimeType( ), 19
PHP utility methods, 213
removeEventListener( ), 19
send( ), 17
setRequestHeader( ), 18
Mochikit, 335
Moo.fx library, 350
Mozilla, event handlers, resetting, 20
Mozilla Firefox, Firebug, 145-151
Mp3act, 83-85
MVC applications, AJAX applications, compared, 329-330
my-tickets component, trouble-ticketing systems, creating, 318-323
Nielson, Jakob, 120
Nifty Corners Cube, 350
nodes, finding, XPath, 174-177
non-AJAX data viewers
building, 220-232
problems with, 232-234
object-oriented (OO) design, libraries, 94
onChange property (scriptaculous), 187
onerror property (XMLHttpRequest object), 20
onload property (XMLHttpRequest object), 20
onprogress property (XMLHttpRequest object), 20
onreadystatechange property (XMLHttpRequest object), 20
OO (object-oriented) design, libraries, 94
Open Source libraries, 91-95
open( ) method, XMLHttpRequest object, 17
Outlook Express, Hotmail, 4
overlap property (scriptaculous), 187
overLIB, 351
overrideMimeType( ) method, XMLHttpRequest object, 19
pagers, 218-219
pages, new HTML content, adding, 42, 44-45
PAJAJ, 340
PEAR (PHP Extension and Application Repository), 196
PHP
libraries, 340-341
utility methods, 213
popup user searches, removing, 80-81
positionOver function, 296-298
primary development languages, JavaScript, 87-88
properties
XMLHttpRequest object, 20-21
Qooxdoo, 336
quickPrint utility method (JavaScript), 212
readyState property (XMLHttpRequest object), 20
readyState variable (XMLHttpRequest object), 20-21
Really Simple Syndication (RSS) feeds, 95
reducing bandwidth use, 105-106
registration component, trouble-ticketing systems, creating, 305-308
Remote Procedure Call. See RPC remote scripting, 9, 54-74
remote stub AJAX, 205, 207-208
removeEventListener( ) method, XMLHttpRequest object, 19
replace method (HTML_AJAX), 199
request flow
AJAX applications, 5-7
Web applications, 5-6
requests
asynchronous requests, sending, 23-24, 27-28
IFrames, 29
sending, 31-36
making, Sarissa, 169-170
types, choosing, 74
XMLHttpRequest object, sending, 16-24, 27-28
responseText property (XMLHttpRequest object), 20
responseXML property (XMLHttpRequest object), 20
reversing strings, RPC (Remote Procedure Call), 59
Rialto, 345
RIAs (Rich Internet Applications), 4-5, 12
rich applications, creating, 106-107
Rico, 335
RPC (Remote Procedure Call), 8, 54
custom XML schemas, 66-72
form POST, mimicking, 60-63
JSON, 72-74
SOAP (Simple Object Access Protocol), 65-66
strings, reversing, 59
URL-encoded AJAX, 64-65
XML consumption, 54-74
RSS (Really Simple Syndication) feeds, 95
SACK (Simple AJAX Code-Kit), 336
SAJAX, 346
Sarissa, 169
AJAX requests, making, 169-170
API documentation, 181
development, 181
DOM documents, working with, 171-174
downloading, 169
installing, 169
mixing, 181
nodes, finding, 174-177
sarissa_ieemu_xpath.js file, 181
sarissa_ieemu_xslt.js file, 181
test cases, running, 181
XML
features, 171
string-loading capabilities, 181
XPath, 181
sarissa_ieemu_xpath.js file, 181
sarissa_ieemu_xslt.js file, 181
Scalable Vector Graphics (SVG), 9, 116
Script Debugger error dialog, 158
scriptaculous, 181
development, 192
downloading, 182
drag-and-drop operations, 185-186
functional tests, 192
functions, 192-193
hide/show pairs, 183-184
installing, 182
prepackaged effects and components, 192
slider control, 189-192
sortables, 187-189
visual effects, 182
scripting, remote scripting, 9
security, AJAX applications, 328
send( ) method, XMLHttpRequest object, 17
sending
asynchronous requests, XMLHttpRequest object, 23-24, 27-28
requests
XMLHttpRequest object, 16-24, 27-28
sent data
document-centric consumption, 42-54
DOM, 45-49
XSLT, 50-54
remote scripting, 54-74
serialization classes, HTML_AJAX, 214
server-side music management systems, Mp3act, 83-85
communication layer
cookies, 36-39
IFrames, 29-36
XMLHttpRequest object, 16-24, 27-28
libraries, 340-346
session inspector interface (Fiddler), 154
setRequestHeader( ) method, XMLHttpRequest object, 18
Simple AJAX Code Kit (SACK), 336
Simple Object Access Protocol. See SOAP slider control, scriptaculous, 189-190, 192
SlideUp (scriptaculous), 183
SOAP (Simple Object Access Protocol), 54
XML-RPC (Remote Procedure Call), 65-66
sortables, scriptaculous, 187-189
Sorttable library, 351
standard.php, Sun Rise and Set data viewer, 228-232
startLoad function, 238-239
status icon (Firebug), 147
status property (XMLHttpRequest object), 20
statusText property (XMLHttpRequest object), 20
strings
DOM documents, loading from, 171-172
reversing, RPC (Remote Procedure Call), 59
Sun Rise and Set data viewer, 218-220
non-AJAX version
graph.php, 228
problems with, 232-234
SunRiseSet class, 222-226, 228
SVG (Scalable Vector Graphics), 9, 116
table paging widgets, 101-103
technologies, AJAX, 7-9
test cases, Sarissa, running, 181
TextView view (Fiddler), 156
ThyAPI, 336
ticket-creation component, trouble-ticketing systems, creating, 310-312
ticket-editor component, trouble-ticketing systems, creating, 312-314, 317-318
tickets, trouble-ticketing systems, 276
TinyAjax, 341
Toolbox (AJAX), 334
Tooltip.js, 351
transforming XML with XSLT, 178-181
trouble-ticketing systems
account-editing component, creating, 308-310
assign-tickets component, creating, 323-328
back end
creating, 275-280
exporting, 282-288
building, 272-274, AJAX reliance scale, 274-275
components, 272
JavaScript application, building, 288-299
login component, creating, 299-305
my-tickets component, creating, 318-323
tasks, 273
ticket-creation component, creating, 310-312
ticket-editor component, creating, 312-314, 317-318
tickets, 276
user tables, 276
user-registration component, creating, 305-308
undo operations, preventing with autosave, 129
undoing actions, providing, 123
URL-encoded AJAX, RPC, 64-65
usability, Web sites, 120-121
common problems, 125-134
guidelines, 121-125
user searches, popup user searches, removing, 80-81
user tables, trouble-ticketing systems, 276
user-registration component, trouble-ticketing systems, creating, 305-308
users
expectations, accommodating, 122
focus
maintaining, 123
validation messages, 125-128
Web site updates, recognition, 130-132
utility methods, 211-213
Uversa Inc., 93
validation messages, stealing focus with, 125-128
varDump utility method (JavaScript), 212
variables, dumping variables, JavaScript, 161-162
vertical mode (scritaculous slider control), 189-190
viewers
AJAX viewers, building, 234-246
Sun Rise and Set data viewer, 218-220
non-AJAX version, 220-234
visual effects, scriptaculous, 182
Web 2.0, 4
Web applications
request flow, 5-6
usability, 120-121
common problems, 125-134
guidelines, 121-125
Web Hypertext Application Technology Working Group (WHATWG), 116
Web logs
comments, login forms, 256-259, 261-262
logins
adding, 250-251
building, 250-262
XML implementation, 262-269
Web page loads, speeding up, 218-232
with AJAX, 234-246
Web sites
intranet Web sites, developing, 97
new HTML content, adding to, 42, 44-45
updating, user recognition, 130-132
usability, 120-121
common problems, 125-134
guidelines, 121-125
Web-based stores, AJAX, requiring, 134
Web-based trouble-ticket systems
account-editing component, creating, 308-310
assign-tickets component, creating, 323-328
back end
creating, 275-280
exporting, 282-288
building, 272-275
components, 272
JavaScript application, building, 288-299
login component, creating, 299-301, 303-305
my-tickets component, creating, 318-323
tasks, 273
ticket-creation component, creating, 310-312
ticket-editor component, creating, 312-314, 317-318
tickets, 276
user tables, 276
user-registration component, creating, 305-308
WHATWG (Web Hypertext Application Technology Working Group), 116
WZ_dragdrop, 352
WZ_jsgraphics, 352
Xajax, 341
XAML (Extensible Application Markup
Language), 116
XHConn, 337
XML
custom XML schemas, RPC, 66-72
document-centric data consumption
DOM, 45-49
XSLT, 50-54
popularity of, 8
remote scripting, 54-74
Sarissa, 171
XML User Interface Language (XUL), 117
XML-RPC, SOAP, 65-66
XMLHttpRequest, 9
XMLHttpRequest object (JavaScript), 16-17
abort( ) method, 19
addEventListener( ) method, 19
asynchronous requests, 23-24, 27-28
cross-browser creation, 21-23
getAllRequestHeaders( ) method, 19
getRequestHeader( ) method, 19
open( ) method, 17
overrideMimeType( ) method, 19
properties, 20-21
readyState variable, 20-21
removeEventListener( ) method, 19
requests, sending, 16-24, 27-28
send( ) method, 17
sent data
document-centric consumption, 42-54
remote scripting, 54-74
setRequestHeader( ) method, 18
XOAD, 341
XPath, Sarissa, 181
node searches, 174-177
XSLT (eXtensible Stylesheet Language Transformations)
XUL (XML User Interface Language), 117
Yahoo! User Interface Library, 337
ZK library, 343
52.15.74.25