הרשם שאלות ותשובות רשימת חברים לוח שנה הודעות מהיום

חזור   הוסטס - פורום אחסון האתרים הגדול בישראל > עיצוב גראפי, תכנות על כל שפותיו וקידום ושיווק אתרים > פורום תיכנות

   
|!|

השב
 
כלים לאשכול תצורת הצגה
ישן 07-03-11, 19:54   # 1
morsrh
חבר מתקדם
 
morsrh's Avatar
 
מיני פרופיל
תאריך הצטרפות: Feb 2010
מיקום: אשקלון.
גיל: 30
הודעות: 444
שלח הודעה באמצעות MSN אל morsrh

morsrh לא מחובר  

Exclamation onkeyup +2seconds

אהלן ,

יש לי חיפוש AJAX כחיפוש ראשי , הבעיה איתו הוא שהוא מפעיל את הפונקציה ע"י onkeyup ,
ולרוב יש מצבים שאתה בא לכתוב מילה או משפט ואז הוא מפעיל את פונקציית החיפוש הרבה פעמים ולחינם.

השאלה שלי היא איך למנוע את זה ,
חשבתי על הכיוון של להפעיל את הפונקציה רק אחרי 2 שניות אחרי האות האחרונה שהוקלדה , מה שלא כל כך הלך לי.

הנה מה שעשיתי :

PHP קוד:
function startSearch(myval){
    
mykey myval;
    
setZero();
}

function 
searchEngineStep1(){
    if(
duration == 0){
        
duration 1;
        
setTimeout('searchEngineStep2()',2000);
    }else{
        
duration 0;
        
searchEngineStep2();
    }
}
function 
searchEngineStep2(){
    if(
duration == 0)
        
searchEngineStep1();
    else{
        
duration 0;
        
askSuggestion(mykey);
    }

אשר duration הוא משתנה של זמן , מאותחל ב0 ,
וmykey הוא משתנה שמאותחל לכלום ואז לאחר מכן מכיל את התוכן של מילת החיפוש,
הפונקציה askSuggestion היא פונקציית AJAX שמפעילה את החיפוש.

אתם יכולים לעבור על הקוד פה למעלה אבל הוא לא עובד ,
אשמח לעזרה בנושא , אני לא יכול להשאיר את החיפוש ככה , זה ממש לא לעניין,

אשמח אם תעזרו לי למצוא פטרון לבעיה , מה שתכננתי עליו כמו שאמרתי מקודם זה להפעיל את פונקציית הAJAX רק לאחר 2 שניות שהאות האחרונה הוקלדה.

תודה רבה.
  Reply With Quote
ישן 07-03-11, 21:17   # 2
sts
חבר בקהילה
 
מיני פרופיל
תאריך הצטרפות: May 2007
הודעות: 262

sts לא מחובר  

אתה יכול להריץ לולאה שלא תעשה כלום ואז לקרוא לפונקציה שלך
אבל הבעיה היא זמן הריצה של הלולאה במחשב של הגולש
זה שונה אצל כל אחד קצת בעייתי
  Reply With Quote
ישן 07-03-11, 21:39   # 3
morsrh
חבר מתקדם
 
morsrh's Avatar
 
מיני פרופיל
תאריך הצטרפות: Feb 2010
מיקום: אשקלון.
גיל: 30
הודעות: 444
שלח הודעה באמצעות MSN אל morsrh

morsrh לא מחובר  

וזה גם לא פרקטי מכיוון שאני רוצה שאחרי התו האחרון יספור 2 שניות ומה שאמרת ה יספור 2 שניות לכל תו ואז פשוט כמשמהו זה יעשה חיפוש כל 2 שניות , כלומר כדי להגיע למילה "סיפורים" ייקח לזה 14 שניות וגם 7 חיפושים וגם העמסה על המחשב של הלקוח.

אני מחפש פטרות יצירתי ויעיל וטוב שיעבוד במדויק בדיוק כמו שהוא אמור לעבוד ,
חייב להיות פטרון לזה ,חברה זה ממש הכרחי אשמח אם תנסו לעזור כמה שיותר.
תודה.
  Reply With Quote
ישן 07-03-11, 21:48   # 4
IgalSt
מנהל פורום, עסק רשום
 
IgalSt's Avatar
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
מיקום: המרכז
גיל: 37
הודעות: 1,432
Send a message via Skype™ to IgalSt

IgalSt לא מחובר  

ציטוט:
נכתב במקור על ידי sts צפה בהודעה
אתה יכול להריץ לולאה שלא תעשה כלום ואז לקרוא לפונקציה שלך
אבל הבעיה היא זמן הריצה של הלולאה במחשב של הגולש
זה שונה אצל כל אחד קצת בעייתי
מצטער, אבל זה פתרון נוראי.
לבזבז משאבי עיבוד רק כדי להמתין קצת? it's a big no no!

2 אפשרויות יש לך:

הראשונה זה לכתוב את זה לבד בצורה כזאת בערך:
תגדיר מינימום תווים לביצוע הקריאה דבר ראשון. לרוב תו אחד או שנים זה קצת מדיי כדי לבצע חיפוש לפיהם. כך שהייתי הולך על לפחות שלושה תווים.
בנוסף ב-onkeyup (ואגב גם onmouseout כי יכול להיות הגולש מדביק את זה וגם עם העכבר כפתור ימני וכו') להגדיר timeOut של כחצי שניה - שניה ולהשוות את זה למשתנה כלשהו. שורה לפני זה תעשה clearTimeout לאותו המשתנה כך שאם הוא הקליד אות נוספת אז תנקה את ההמתנה שלך ותתחיל שוב לספור.
ולסיום, תאר את המצב הבא:
יש לך ב-DB את הערכים האלה: מוצר ראשון, מוצר שני, מוצר שלישי
הגולש הקליד "מוצ" - הסקריפט שלך הלך לשרת הביא את שלושת הערכים הקיימים.
הגולש החליט להמשיך להקליד והוסיף ל"מוצ" גם את האות ר' ויצא לך "מוצר". האם תלך שוב ל-DB להביא את אותם שלושת הערכים? הרי אין מצב שתקבל משהו אחר.
לכן כאן יהיה יפה להשתמש בקאשינג ולחפש בתוך hash table בצורה זולה מבחינת משאבים (החיפשו הוא בקליינט) ולא ב-DB בצורה בזבזנית מבחינת משאבים (שהן מדובר במשאבי שרת ו-DB).

האפשרות השניה היא להשתמש ב-plugin מובנה ב-jquery UI - AutoComplete.

לסיכום, לפני כחצי שנה מימשתי את AutoComplete יחד עם הקאשינג שדיברתי עליו עבור חברה שעבדתי בה. תוכל למצא דוגמא בחיפוש שבעמוד הזה - נסה להתחיל לחפש "הליכון" בחיפוש שבעמוד
(זהו אחד הלקוחות של החברה ואל תשפוט אותי על הקוד שמסביב, כי לא אני כתבתי. אני כתבתי רק חלקים מהעמוד שבפנים - טבלאות וכל שאר הדברים המכוערים שם זה לא הסגנון שלי )

בהצלחה
  Reply With Quote
ישן 08-03-11, 17:55   # 5
morsrh
חבר מתקדם
 
morsrh's Avatar
 
מיני פרופיל
תאריך הצטרפות: Feb 2010
מיקום: אשקלון.
גיל: 30
הודעות: 444
שלח הודעה באמצעות MSN אל morsrh

morsrh לא מחובר  

לא הבנתי את הכוונה שלך בנוגע לקטע JS עם הtimeout אם אפשר להסביר יותר מפורט \ להביא דוגמא זה ממש יעזור.
  Reply With Quote
ישן 08-03-11, 21:14   # 6
IgalSt
מנהל פורום, עסק רשום
 
IgalSt's Avatar
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
מיקום: המרכז
גיל: 37
הודעות: 1,432
Send a message via Skype™ to IgalSt

IgalSt לא מחובר  

ציטוט:
נכתב במקור על ידי IXCESE צפה בהודעה
לא הבנתי את הכוונה שלך בנוגע לקטע JS עם הtimeout אם אפשר להסביר יותר מפורט \ להביא דוגמא זה ממש יעזור.
בבקשה דוגמא
אומנם לא חיברתי את זה ל-onkeyup, אבל אתה יכול להמשיך ללחוץ על הכפתור כל הזמן ולא תקבל alert (כל עוד אתה לוחץ תוך פחות מ-3 שניות).
תשים לב ש-3 שניות אחרי הלחיצה האחרונה אתה מקבל את ה-alert
  Reply With Quote
ישן 08-03-11, 22:37   # 7
morsrh
חבר מתקדם
 
morsrh's Avatar
 
מיני פרופיל
תאריך הצטרפות: Feb 2010
מיקום: אשקלון.
גיל: 30
הודעות: 444
שלח הודעה באמצעות MSN אל morsrh

morsrh לא מחובר  

פייי , קוד על רמה !
עובד מצויין!
מהיום אני שם עליך חותם של מומחה , לא צוחק

מאיפה למדת לכתוב ברמה כזאת JS? מכל המקומות שלמדתי JS היה ברמה נמוכה בהרבה פחות , אם אתה יכול לזרוק לי איזה קישור לאתר שילמד JS על רמה גבוהה וואלה זה אחלה.

תודה רבה , עובד מצויין.
  Reply With Quote
ישן 08-03-11, 22:47   # 8
IgalSt
מנהל פורום, עסק רשום
 
IgalSt's Avatar
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
מיקום: המרכז
גיל: 37
הודעות: 1,432
Send a message via Skype™ to IgalSt

IgalSt לא מחובר  

ציטוט:
נכתב במקור על ידי IXCESE צפה בהודעה
פייי , קוד על רמה !
עובד מצויין!
מהיום אני שם עליך חותם של מומחה , לא צוחק

מאיפה למדת לכתוב ברמה כזאת JS? מכל המקומות שלמדתי JS היה ברמה נמוכה בהרבה פחות , אם אתה יכול לזרוק לי איזה קישור לאתר שילמד JS על רמה גבוהה וואלה זה אחלה.

תודה רבה , עובד מצויין.
על רמה בגלל שהשתמשתי באובייקט?

היום אני מאוד נהנה לפתח לקיינט בכלל ועם js בפרט.. ולחשוב שעד ללפני כשנתיים שלוש לא חיבבתי יותר מדיי את השפה הזאת.
לומדים לאט לאט, צוברים ניסיון OJT בעיקר.

בקרוב אני מעלה שירות חדש שאני עובד עליו כבר זמן מה עם המון שורות קוד בקליינט.. אביא את זה לביקורת אתרים כשיעלה בגירסת בטא.
  Reply With Quote
ישן 08-03-11, 22:51   # 9
morsrh
חבר מתקדם
 
morsrh's Avatar
 
מיני פרופיל
תאריך הצטרפות: Feb 2010
מיקום: אשקלון.
גיל: 30
הודעות: 444
שלח הודעה באמצעות MSN אל morsrh

morsrh לא מחובר  

נראה לי פינוק של מתכנתים היום גרם למהפכה ,
בכמה מהאתרים הגדולים של למידה מהאינטרנט אפילו לא מוזכר כתיבת קוד מעל רמה של פונקצית ,
באמת שאהבתי את הקוד שלך , לא נתקלתי בכזאת רמה של JS פעם , ונחמד שנתקלתי , אשמח להרחיב את הידע שלי בנושא D:
ושוב תודה , כי זה פשוט עושה את העבודה כמו שצריך !
  Reply With Quote
ישן 08-03-11, 23:36   # 10
IgalSt
מנהל פורום, עסק רשום
 
IgalSt's Avatar
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
מיקום: המרכז
גיל: 37
הודעות: 1,432
Send a message via Skype™ to IgalSt

IgalSt לא מחובר  

אין בעיה עם פונקיות גם.
כל אחד וסגנון הכתיבה שנוח לו ושטוב לו בתור פתרון.
אם אתה רוצה לקרא על זה קצת, ישנם מספר Design Patterns ב-JS, גגל על זה קצת.

JS היא שפה מעולה, ויש לך עתיד מאוד אופטימי: יותר ויותר מכשירים מריצים אותה ובעצם כמעט לכל אחד בעולם המערבי כיום יש מכשיר ביד שמריץ JS בצורה כמעט אחידה.
ועם ההתפתחות של הטלפון החכמים ומחשבי הלוח, השוק והמעמד של JS רק גדל והולך.
לדעתי תוך כעשור כמעט ולא יהיו אפליקציות Desktop ואת מקומן יתפסו אפליקציות מבוססות דפדפן שיכתבו ב-JS (שכן אין שום דבר אחר שרץ אצל הקליינט)
  Reply With Quote
השב

חברים פעילים הצופים באשכול זה: 1 (0 חברים ו- 1 אורחים)
 


חוקי פירסום
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is מופעל
סמיילים הם מופעל
[IMG] קוד מופעל
קוד HTML מכובה

קפיצה לפורום


כל הזמנים הם GMT +2. הזמן כעת הוא 04:48.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ