האמת חשבתי אם לכתוב את המדריך הזה במילים מסובכות או לכתוב אותו בפשטות שכולם יבינו והחלטתי לא תראו כאן חצי מילה שהיא מעבר לרמה של ילד בכיתה ו'.קודם כול בוא נפרק את המילה AJAX
Asynchronous JavaScript And XML
Asynchronous=אסינכרונית ללא תלות בתהליכים אחרים זאת אומרת שכול הבקשות שתעשו יעבדו ברקע ללא רענון של הדף במילים פשוטות.
Javascript-אם אין לכם מושג מה זה אומר המדריך הזה לא בשבילכם.
XML-אני לא ירחיב על זה יותר מדיי כי במדריך הזה אנחנו נחזיר Text רגיל ולא XML.
דבר שאני לא מבין אבל כולם מנסים לגרום לAJAX להראות בתור שפה חדשה מה שזה לגמרי לא נכון AJAX זה JAVASCRIPT הכי בסיסי שיש רק שהפעם אנחנו משתמשים באובייקט XMLHttp שאני ירחיב עליו בהמשך.
XMLHttp
--------------------
האובייקט המדובר מאפשר בסה"כ לשלוח בקשות מצד הלקוח לשרת ברקע למשל
יהי קובץ mail.php
שבתוכו יש טופס שליחה למייל.
יהי קובץ send.php
שהוא מקבל את הפרמטרים מהקובץ mail.php ושולח אותם לאימייל.
עכשיו ברגע שאנחנו יוצרים form עם action לעמוד מסויים אוטומאטית הדף שלנו יתרענן ברגע שנשלח את הקובץ.
פה נכנס XMLHttp אנחנו שולחים את הבקשה ברקע,וככה הדף שלנו לא מתרענן/אנחנו נשאר באותו עמוד וsend.php ייקבל את הפרמטרים אם נדע איך לשלוח אותם כמובן.
אוקי עד פה הסבר בקטנה על xmlhttp אבל הדוגמא שנתתי לא ממש מסבירה את
המשמעות שלו כי בדרך כלל אנחנו רוצים לקבל מידע מאותו דף ולא רק לשלוח לו.
-------------------------------------------------------------------
הגיע הזמן לכתוב קצת קוד קודם כול אנחנו צריכים להתאים את אובייקט שלנו לכול הדפדפנים בוא נבנה פונקציה קצרה שתעשה את זה.
function ajaxObject() { var xmlHttp=null; try { xmlHttp=new XmlHttpRequest(); } catch(e) { xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); catch (e) { try { xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); catch(e) { alert('הדפדפן לא תומך בAJAX'); return false; } } } } return xmlHttp; }
|
בטח מה שמבהיל אותכם עכשיו זה מבנה הtry והcatch אבל ברגע שתבינו אותו אני מאמין שתוכלו להפוך אותו בקלות לאיזה מבנה שתרצו (if,switch...)
אוקי מבנה הtry catch כשמו כן הוא בתוך בלוק הtry אנחנו מכניסים קוד מסויים ברגע שהקוד הזה מתקיים הבלוק מסתיים ואנחנו מגיעים לסוף הפונקציה בה אנחנו מחזירים את האובייקט,ברגע שהוא לא מתקיים אנחנו תופסים את הExeption ומנסים אובייקט אחרי אם הדפדפן לא תומך בשום אובייקט אנחנו מחזירים false ומקפיצים הודעה שהדפדפן אינו תומך בAJAX.
האובייקט XmlHttpRequest() נוצר בשביל רוב הדפדפנים שתומכים בו(FF,Opera...)
הActiveXObject נוצר בשביל משתמשי IE.
עד פה קלי קלות 
עכשיו אנחנו צריכים לבנות פונקציה שתעשה 2 דברים
1.תבדוק מתי הבקשה מהשרת הושלמה.
2.תבצע את הבקשה עצמה.
function sendRequest(page) { var xhr=ajaxObject; xhr.onreadystatechange=function() { if (xhr.readyState == 4) { document.getElementById('someDivId').innerHTML=xhr.responseText } } xhr.open('GET',page,true); }
|
xhr=אנחנו מקבלים את האובייקט שלנו מהפונקציה שבנינו.
onreadystatechange=אירוע של האובייקט שלנו כמו שיש
onclick
onmouseover
onmouseup
....
אז יש onreadystatechange שזה אומר ברגע שמצב הבקשה משתנה.
פה הוא משתמש לנו בתור eventHandler מטפל באירוע מסויים באמצעות פונקציה.
readyState=מחזיק את מצב הבקשה שלנו במספר מ-0 עד 4.
1=הבקשה לא זוהתה(במצב של שגיאה)
2=הבקשה בטעינה
3=הבקשה נטענה
4=לא הושלמה במלואה(אבל אפשר להציג את הנתונים כבר)
5=הבקשה הושלמה במלואה.
אם הבקשה הושלמה אנחנו מכניסים את המידע שקיבלנו כמו שראיתם לתוך div.
open-מטודה של האובייקט שלנו שוב,המטודה הזאת אחראית על הפרטים החיוניים לשליחה של הבקשה.
xhr.open(method,url,async)
|
method=שיטת השליחה ממש כמו בטופס יש לנו post וget.
url=הדף אליו אנחנו שולחים את הבקשה.
async=אם אנחנו רוצים שהבקשה תיהיה אסינכרונית או לא מקבל ערך bool(true,false)
send=שולח את הבקשה בשביל IE7 צריך להכניס ערך null אל תוך send.
תראו המדריך הזה בטוח לא מלא ולא מקצועי אבל דבר אחד הוא כן הוא יכול לעזור לאלה שמסתבכים עם השפה הגבוהה של אתרים אחרים.
ברגע שהבנתם אותו יהיה לכם קלי קלות להתקדם בנושא ולהגיע למצבים מתקדמים יותר שזה אומר עבודה עם JSON,XML.....
כול הזכויות שמורות לפורום בנית אתרים ברוטר.
תהנו.