![]() |
# 1 |
חבר מתקדם
|
![]() אהלן ,
יש לי חיפוש AJAX כחיפוש ראשי , הבעיה איתו הוא שהוא מפעיל את הפונקציה ע"י onkeyup , ולרוב יש מצבים שאתה בא לכתוב מילה או משפט ואז הוא מפעיל את פונקציית החיפוש הרבה פעמים ולחינם. השאלה שלי היא איך למנוע את זה , חשבתי על הכיוון של להפעיל את הפונקציה רק אחרי 2 שניות אחרי האות האחרונה שהוקלדה , מה שלא כל כך הלך לי. הנה מה שעשיתי : PHP קוד:
וmykey הוא משתנה שמאותחל לכלום ואז לאחר מכן מכיל את התוכן של מילת החיפוש, הפונקציה askSuggestion היא פונקציית AJAX שמפעילה את החיפוש. אתם יכולים לעבור על הקוד פה למעלה אבל הוא לא עובד , אשמח לעזרה בנושא , אני לא יכול להשאיר את החיפוש ככה , זה ממש לא לעניין, אשמח אם תעזרו לי למצוא פטרון לבעיה , מה שתכננתי עליו כמו שאמרתי מקודם זה להפעיל את פונקציית הAJAX רק לאחר 2 שניות שהאות האחרונה הוקלדה. תודה רבה. |
![]() |
![]() |
# 2 |
חבר בקהילה
|
אתה יכול להריץ לולאה שלא תעשה כלום ואז לקרוא לפונקציה שלך
אבל הבעיה היא זמן הריצה של הלולאה במחשב של הגולש זה שונה אצל כל אחד קצת בעייתי |
![]() |
![]() |
# 3 |
חבר מתקדם
|
וזה גם לא פרקטי מכיוון שאני רוצה שאחרי התו האחרון יספור 2 שניות ומה שאמרת ה יספור 2 שניות לכל תו ואז פשוט כמשמהו זה יעשה חיפוש כל 2 שניות , כלומר כדי להגיע למילה "סיפורים" ייקח לזה 14 שניות וגם 7 חיפושים וגם העמסה על המחשב של הלקוח.
אני מחפש פטרות יצירתי ויעיל וטוב שיעבוד במדויק בדיוק כמו שהוא אמור לעבוד , חייב להיות פטרון לזה ,חברה זה ממש הכרחי אשמח אם תנסו לעזור כמה שיותר. תודה. |
![]() |
![]() |
# 4 | |
מנהל פורום, עסק רשום
|
ציטוט:
לבזבז משאבי עיבוד רק כדי להמתין קצת? it's a big no no! 2 אפשרויות יש לך: הראשונה זה לכתוב את זה לבד בצורה כזאת בערך: תגדיר מינימום תווים לביצוע הקריאה דבר ראשון. לרוב תו אחד או שנים זה קצת מדיי כדי לבצע חיפוש לפיהם. כך שהייתי הולך על לפחות שלושה תווים. בנוסף ב-onkeyup (ואגב גם onmouseout כי יכול להיות הגולש מדביק את זה וגם עם העכבר כפתור ימני וכו') להגדיר timeOut של כחצי שניה - שניה ולהשוות את זה למשתנה כלשהו. שורה לפני זה תעשה clearTimeout לאותו המשתנה כך שאם הוא הקליד אות נוספת אז תנקה את ההמתנה שלך ותתחיל שוב לספור. ולסיום, תאר את המצב הבא: יש לך ב-DB את הערכים האלה: מוצר ראשון, מוצר שני, מוצר שלישי הגולש הקליד "מוצ" - הסקריפט שלך הלך לשרת הביא את שלושת הערכים הקיימים. הגולש החליט להמשיך להקליד והוסיף ל"מוצ" גם את האות ר' ויצא לך "מוצר". האם תלך שוב ל-DB להביא את אותם שלושת הערכים? הרי אין מצב שתקבל משהו אחר. לכן כאן יהיה יפה להשתמש בקאשינג ולחפש בתוך hash table בצורה זולה מבחינת משאבים (החיפשו הוא בקליינט) ולא ב-DB בצורה בזבזנית מבחינת משאבים (שהן מדובר במשאבי שרת ו-DB). האפשרות השניה היא להשתמש ב-plugin מובנה ב-jquery UI - AutoComplete. לסיכום, לפני כחצי שנה מימשתי את AutoComplete יחד עם הקאשינג שדיברתי עליו עבור חברה שעבדתי בה. תוכל למצא דוגמא בחיפוש שבעמוד הזה - נסה להתחיל לחפש "הליכון" בחיפוש שבעמוד (זהו אחד הלקוחות של החברה ואל תשפוט אותי על הקוד שמסביב, כי לא אני כתבתי. אני כתבתי רק חלקים מהעמוד שבפנים - טבלאות וכל שאר הדברים המכוערים שם זה לא הסגנון שלי ![]() בהצלחה |
|
![]() |
![]() |
# 5 |
חבר מתקדם
|
לא הבנתי את הכוונה שלך בנוגע לקטע JS עם הtimeout אם אפשר להסביר יותר מפורט \ להביא דוגמא זה ממש יעזור.
|
![]() |
![]() |
# 6 | |
מנהל פורום, עסק רשום
|
ציטוט:
אומנם לא חיברתי את זה ל-onkeyup, אבל אתה יכול להמשיך ללחוץ על הכפתור כל הזמן ולא תקבל alert (כל עוד אתה לוחץ תוך פחות מ-3 שניות). תשים לב ש-3 שניות אחרי הלחיצה האחרונה אתה מקבל את ה-alert |
|
![]() |
![]() |
# 7 |
חבר מתקדם
|
פייי , קוד על רמה !
עובד מצויין! מהיום אני שם עליך חותם של מומחה , לא צוחק מאיפה למדת לכתוב ברמה כזאת JS? מכל המקומות שלמדתי JS היה ברמה נמוכה בהרבה פחות , אם אתה יכול לזרוק לי איזה קישור לאתר שילמד JS על רמה גבוהה וואלה זה אחלה. תודה רבה , עובד מצויין. |
![]() |
![]() |
# 8 | |
מנהל פורום, עסק רשום
|
ציטוט:
![]() היום אני מאוד נהנה לפתח לקיינט בכלל ועם js בפרט.. ולחשוב שעד ללפני כשנתיים שלוש לא חיבבתי יותר מדיי את השפה הזאת. לומדים לאט לאט, צוברים ניסיון OJT בעיקר. בקרוב אני מעלה שירות חדש שאני עובד עליו כבר זמן מה עם המון שורות קוד בקליינט.. אביא את זה לביקורת אתרים כשיעלה בגירסת בטא. |
|
![]() |
![]() |
# 9 |
חבר מתקדם
|
נראה לי פינוק של מתכנתים היום גרם למהפכה ,
בכמה מהאתרים הגדולים של למידה מהאינטרנט אפילו לא מוזכר כתיבת קוד מעל רמה של פונקצית , באמת שאהבתי את הקוד שלך , לא נתקלתי בכזאת רמה של JS פעם , ונחמד שנתקלתי , אשמח להרחיב את הידע שלי בנושא D: ושוב תודה , כי זה פשוט עושה את העבודה כמו שצריך ! |
![]() |
![]() |
# 10 |
מנהל פורום, עסק רשום
|
אין בעיה עם פונקיות גם.
כל אחד וסגנון הכתיבה שנוח לו ושטוב לו בתור פתרון. אם אתה רוצה לקרא על זה קצת, ישנם מספר Design Patterns ב-JS, גגל על זה קצת. JS היא שפה מעולה, ויש לך עתיד מאוד אופטימי: יותר ויותר מכשירים מריצים אותה ובעצם כמעט לכל אחד בעולם המערבי כיום יש מכשיר ביד שמריץ JS בצורה כמעט אחידה. ועם ההתפתחות של הטלפון החכמים ומחשבי הלוח, השוק והמעמד של JS רק גדל והולך. לדעתי תוך כעשור כמעט ולא יהיו אפליקציות Desktop ואת מקומן יתפסו אפליקציות מבוססות דפדפן שיכתבו ב-JS (שכן אין שום דבר אחר שרץ אצל הקליינט) |
![]() |
![]() |
חברים פעילים הצופים באשכול זה: 1 (0 חברים ו- 1 אורחים) | |
|
|