לונג טיים נו רייט
שויין אני תמיד יכול להאשים את העבודה/אשה/ילדים
אני ממשיך בפוסט הזה בעצם מה שלא הספקתי לעשות בהרצאה הזו, ומה שכן היה לי בתכנון.
בכל אופן היום אנחנו מדברים על טעינת מידע מדף צד שרת. ב AS2 היה לנו את ה load את ה send ואת sendAndLoad והיום נשאר לנו במקום כל אלו את URLLoader.
במאמרון הבא נראה בעצם את המקרה היותר מורכב של לשלוח לדף ה PHP שלי מידע, וגם לקבל ממנו מידע רלוונטי חזרה. כמובן שאפשר רק לשלוח, או אפשר לשלוח בקשה ולקבל מידע ללא העברת אינפורמציה בבקשה עצמה אבל המקרה המורכב מכסה, מן הסתם, גם את השניים הנ”ל.
ובכן חזרונת קטנה על מה שנאמר בשיעור לפחות 4 פעמים.
ב AS3 פעולות של טעינה (שהן פעולות אה-סינכרוניות) מתבצעות בעצם ב 4 שלבים:
- בניית אובייקט הבקשה (URLRequest)
- בניית אובייקט הטעינה (URLLoader)
- הגדרת האיבנטים של אובייקט הטעינה – לא לשכוח גם איבנט הצלחה וגם כישלון
- שליחת הבקשה עצמה (אובייקט הטעינה מבצע load לאובייקט הבקשה)
במקרה הספציפי שלנו יש לנו עוד אובייקט עזר בדרך (URLVariables) שבעצם נותן לי בצורה נוחה להכניס את המשתנים של הבקשה שלי אליו בצורה נוחה של key – value במקום להתחיל לשרשר בבקשה כל מיני סימנים מוזרים שיש מעל הספרה 7 אחרי סימן שאלה.
כמובן שיש ליצור גם את הפונקציות שמטפלות בהצלחה/כישלון של הבקשה.
אפשר לקצר דרכים, אפשר לוותר על חלק מהדברים – אני ממליץ שלא.
רגע לפני הקוד – נוכל לראות מה יש בדף ה PHP שנמצא למעלה בסרבר. אני לא איש צד שרת אז לא להתייחס לסינטקס או ליעילות או לאיך הייתם עושים את זה בשורה אחת או עם switch, לא זה העניין – המטרה להראות רק מה יש בצד השני של הצינור.
קוד PHP
< ?php if(isset($_POST['myTest'])) { echo "got POST `",$_POST['myTest'],"` from flash"; } if(isset($_GET['myTest'])) { echo "got GET `",$_GET['myTest'],"` from flash"; } else { echo "missing variable myTest"; } ?>
וזה הקוד שבפלאש ב over dose של תיעוד שאחריו יש לי מעט מאוד על מה להסביר
// build an object to hold all variables i want to send var vars:URLVariables = new URLVariables(); vars.myTest = "hello"; // build the request object var req:URLRequest = new URLRequest("http://www.avgil.com/mytestpage.php"); req.data = vars; //define the sending method - POST/GET req.method = URLRequestMethod.GET; // create the loader object var url_loader:URLLoader = new URLLoader(); // adding the event listeners url_loader.addEventListener(Event.COMPLETE, onComplete); url_loader.addEventListener(IOErrorEvent.IO_ERROR, onError); //make the call url_loader.load(req); // success function function onComplete(e:Event):void { trace("got data from server"); //retrive the data from the return result - the long version var myURLLoader:URLLoader = e.target as URLLoader; trace(myURLLoader.data); // the short way to display it : trace(URLLoader(e.target).data); // and another one trace(e.target.data); } //failur function function onError(e:IOErrorEvent):void { trace("Something wrong!"); trace(e.text); }
אפשר לשנות את הURL של הד, לראות איך פונקציית הכישלון מגיבה, אפשר לשנות את שם המשתנה ולראות איך הדף PHP עצמו מגיב או את שם המשתנה שאנחנו שולחים. אם אנחנו רוצים לשלוח יותר מאחד - פשוט מוסיפים לאותו אובייקט את המשתנים ואת הערך שלהם.
[…] 2 יולי, 2008 (21:07) | כללי ו Off-Topic אלן אלן כאן אני הולך לנסות לתעד את השיעורים שהועברו אונליין בפלאשו שיעור ראשון - AS3 מבוא והגירה מ AS2 http://adobechats.adobe.acrobat.com/p74728146/ שיעור שני - המשך איבנטים, עקרונות טעינה של מידע חיצוני http://adobechats.adobe.acrobat.com/p40991464// השלמה למה שלא הספקנו בשיעור זה - עבודה מול צד שרת http://www.avgil.com/blog/?p=113 שיעור שלישי - אלף בית פלקס ו flexBuilder - בוא יבוא אינשאללה במהרה בימינו אמן Spread the word: These icons link to social bookmarking sites where readers can share and discover new web pages. […]