View Single Post
ישן 02-08-12, 15:36   # 7
IgalSt
מנהל פורום, עסק רשום
 
IgalSt's Avatar
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
מיקום: המרכז
גיל: 38
הודעות: 1,432
Send a message via Skype™ to IgalSt

IgalSt לא מחובר  

ציטוט:
נכתב במקור על ידי איציק ברבי צפה בהודעה
סידרתי את הקוד, הוא עובד אבל די לאט עלה לי רעיון לבטל את כל הבקשות של הAJAX שנשלחו איך אני עושה את זה? די הסתבכתי..
PHP קוד:
$("input.fullname").keyup(function(){
        $.
ajax({
            
url"Sources/Ajax.php?act=User_List",
            
type"POST",
            
data"fullname="+$(this).val(),
            
success: function(callback){
                
availableTags callback.split(',');
                $(
"input.fullname").autocomplete({
                    
sourceavailableTags
                
});
            }
        });
        return 
false;
    }); 
הכיוון הזה מאוד לא טוב.
מה שאתה עושה זה לאתחל הכל מההתחלה אחרי כל לחיצת כפתור במקלדת. לא עושים את זה ככה.

תיקנתי לך את הקוד המקורי שלך.
http://jsfiddle.net/C2sRR/3/

אני ממליץ לך להסתכל על הדוגמה הזאת בדוקומנטציה (אומנם מדובר ב-JSONP, אך העקרון זהה).
שים לב שייתכן מאוד שתצטרך למפות את הנתונים שאתה מקבל באחרי קריאת ה-AJAX שלך לאובייקט JS ש-autocomplete מצפה לקבל ממך.

בנוסף אני ממליץ לעיין בדוגמה עם cache, כך שזה אמור להאיץ משמעותית את הביצועים שכן אתה לא תבצע קריאות AJAX מרובות, אלא לרוב רק פעם אחת.
לדוגמה אם אתה מחליט לבצע קריאת AJAX אחרי שהיוזר הזין 2 אותיות, אז יחזרו לך תוצאות. כשהוא יוסיף אות נוספת, אתה תעשה את הסינון מתוך התוצאות שחזרו לך לפני כן (כשהוא לך רק 2 אותיות). במקרה כזה בוודאי שאין צורך לקריאה נוספת שכן אם התוצאה נמצאת ב-DB, היא אחת מהתוצאות שכבר חזרו לך לפני כן.

Last edited by IgalSt; 02-08-12 at 15:39..
  Reply With Quote