24-02-2009, 19:21
|
מנהל
|
|
חבר מתאריך: 26.07.08
הודעות: 6,473
|
|
אוקי הבנתי.
בכתיבת Loader אתה מתכוון לאיזה div קטן ונחמד שקופץ באמצע העמוד וכתוב בו טקסט כמו "...Loading" (או "אפילו" עם תמונה בפנים).
אתה צריך להסתכל על אובייקט ה-AJAX (שבדוגמאות קוראים לו xmlHttp) בתור מחלקה עם מתודות ומאפיינים.
onreadystatechange זהו המאפיין של אובייקט ה-AJAX.
אנחנו משווים אותו לפונקציה מסוימת כדי שהיא תרוץ תחת תנאים מסוימים.
הפונקציה ש-onreadystatechange שווה אליה, תרוץ כל פעם שערכו של המאפיין readyState ישתנה. ברוב המקרים הקוד העיקרי ירוץ כאשר הבקשה ששלחנו הושלמה (מצב 4) בזכות תנאי ה-if שבתוכה.
כדי לגרום לחלון להופיע ולהעלם (בלי קשר ל-AJAX), מה שצריך לעשות זה להתעסק קצת עם DHTML. נניח שכבר כתבת קוד של חלון מופיע (אקרא לזה פונקצית popinWindow) וחלון נעלם (popoutWindow).
אז מה שצריך לעשות זה לגרום לחלון להופיע כאשר שולחים את בקשת ה-AJAX, כלומר משהו כמו:
קוד:
// Show the "Loading..." window
popinWindow();
// Send the ajax request & set the onreadystatechange attribute
xmlHttp.onreadystatechange=stateChanged;
xmlHttp.open("GET",url,true);
xmlHttp.send(null);
כעת פונקציית stateChanged תכיל קוד שירוץ כאשר readyState יהיה שווה ל-4 (בקשה הושלמה) ותיגרום להעלמת חלון ה-Loader בתנאי שהמצב הנ"ל יתקיים:
קוד:
function stateChanged()
{
if (xmlHttp.readyState==4)
{
// hide the Loader window
popoutWindow();
run_some_function();
}
}
|