ABA


"|מדריך|המדריך הבסיסי לעבודה עם AJAX"
גירסת הדפסה        
קבוצות דיון בניית אתרים נושא #13125 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 13125
akoka

   23:48   24.10.07   
אל הפורום  
  |מדריך|המדריך הבסיסי לעבודה עם AJAX  
 
  
האמת חשבתי אם לכתוב את המדריך הזה במילים מסובכות או לכתוב אותו בפשטות שכולם יבינו והחלטתי לא תראו כאן חצי מילה שהיא מעבר לרמה של ילד בכיתה ו'.

קודם כול בוא נפרק את המילה 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.....

כול הזכויות שמורות לפורום בנית אתרים ברוטר.

תהנו.


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  מלךך תודה רבה! עוד מעט נעבור עליו :) asco88  24.10.07 23:50 1
  תותח אתה! תודה :) MeToR 24.10.07 23:50 2
  כפרה עליך יוחאי :) תודה רבה Sn00py  25.10.07 04:03 3
  מעולה אחי תודה אני אעבור עליו אחר כך ;) ronen333  25.10.07 10:57 4
  טוב יוחאי אתה חופר עם כל המדריכים האלו... Fly2High 25.10.07 12:06 5
     ללמוד C# ברמה בסיסית יש לך מספיק מאיפה... Sn00py  25.10.07 12:08 6
         yes master :D Fly2High 25.10.07 12:31 7
  תודה אחי, נעבור על זה עוד מעט... Tom_l  26.10.07 10:55 8

       
asco88 
חבר מתאריך 17.6.04
26757 הודעות
   23:50   24.10.07   
אל הפורום  
  1. מלךך תודה רבה! עוד מעט נעבור עליו :)  
בתגובה להודעה מספר 0
 


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
MeToR
חבר מתאריך 26.1.07
11 הודעות
   23:50   24.10.07   
אל הפורום  
  2. תותח אתה! תודה :)  
בתגובה להודעה מספר 0
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Sn00py 
חבר מתאריך 1.8.02
2954 הודעות
   04:03   25.10.07   
אל הפורום  
  3. כפרה עליך יוחאי :) תודה רבה  
בתגובה להודעה מספר 0
 
  

\x6C\x65\x65\x74\x68\x61\x78\x30
\x72\x3A\x2D\x29
tresp4sser


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ronen333 
חבר מתאריך 20.2.03
6069 הודעות
   10:57   25.10.07   
אל הפורום  
  4. מעולה אחי תודה אני אעבור עליו אחר כך ;)  
בתגובה להודעה מספר 0
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Fly2High

   12:06   25.10.07   
אל הפורום  
  5. טוב יוחאי אתה חופר עם כל המדריכים האלו...  
בתגובה להודעה מספר 0
 
   סתם חחח
נראה טוב!
נקרא בהזדמנות.. קודם רוצה ללמוד C# (אההם לירן אההם )


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Sn00py 
חבר מתאריך 1.8.02
2954 הודעות
   12:08   25.10.07   
אל הפורום  
  6. ללמוד C# ברמה בסיסית יש לך מספיק מאיפה...  
בתגובה להודעה מספר 5
 
   אחרי שתלמד רמה בסיסית נלמד אותך דברים מתקדמים יותר

\x6C\x65\x65\x74\x68\x61\x78\x30
\x72\x3A\x2D\x29
tresp4sser


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Fly2High

   12:31   25.10.07   
אל הפורום  
  7. yes master :D  
בתגובה להודעה מספר 6
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Tom_l 
חבר מתאריך 1.1.10
1696 הודעות
   10:55   26.10.07   
אל הפורום  
  8. תודה אחי, נעבור על זה עוד מעט...  
בתגובה להודעה מספר 0
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net