Select2: סלקטבוקס לא מציג נתונים
-
לילה טוב לכולם!!
אני משתמש בספריה הנ"ל, ומקבל את הדטה ע"י ajax. בהתחלה יש לי פקד סלקטבוקס ריק, המשתמש אמור להזין אותיות לחיפוש שנשלחות לשרת, והוא מחזיר את כל התוצאות האפשריות, ומהם המשתמש אמור לבחור שם מסוים.
כתבתי את הקוד, הכל לכאו' עובד אולם כשאני מקליד מילה בפקד הסלקטבוקס כותב שאין תוצאות.
כשאני מדבאג, בכרטיסיה network אני רואה שהוא אכן שולח בקשה ומקבל תשובה עם סטטוס 200, כמו כן בחלונית של התשובה אני רואה את האובייקט של כל המידע שהגיע. זה מערך של אובייקטים שכל אובייקט מכיל: text וערך, id וערך. כמו שהסלקט מצפה לקבל. אם כן הכל לכאו' עובד ותקין, אולם הסלקטבוקס לא יודע לשייך את המידע לפקד
התיעוד שלהם לוקה בחסר.. (זה נראה שלגירסה 4 הם התעצלו לכתוב תיעוד.. בניגוד לגרסא 3.5 שיש עליה הרבה יותר תיעוד.. עיין כאן אם כי ניסיתי את מה שכתוב שם וגם זה לא עוזר.. ) כי אני כבר שעות יושב עליו ומנסה להבין מדוע זה לא עובד וניסיתי כ"כ הרבה אפשרויות..
אני אשמח אם מישהו התנסה בזה ויוכל לעזור לי...
תודה רבה רבה!!!הנה הקוד (זה חלק מפונקציה רחבה יותר, שמקבלת מערך של סלקטבוקסים קוראת את הנתונים שלהם והופכת אותם לסלקט2):
$(idElement).select2({ language: "he", dir: "rtl", style: "width: 100%", ajax: { url: item.url, dataType: 'json', delay: 250, //אנו מעבדים את הפרמטרים המוחזרים על ידי סלקט2 ומתאימים אותם לערכים שהשרת מצפה לקבל data: function (params) { params.page = params.page || 1; return { UserId: item.userId ? item.userId : 0, TextTyped: params.term, // search term Skip: (params.page == 1) ? 0 : item.take * (params.page - 1), Take: item.take //page: params.page }; }, processResults: function (data, params) { params.page = params.page || 1; return { results: data.item, pagination: { more: (params.page * 30) < data.total_count } }; }, cache: true }, escapeMarkup: function (markup) { return markup; }, minimumInputLength: 2, templateResult:function(item) { var originalOption = item.element; return item.text }, templateSelection: function (item) { var originalOption = item.element; return item.text; } });
תודה רבה רבה!!
פורסם במקור בפורום CODE613 ב26/01/2016 22:08 (+02:00)
-
נראה לי שלפורום היקר שלנו יש סגולה מיוחדת, שבזכות זה שמפרסמים בו את השאלה מיד לאחר מכן זוכים למצוא את התשובה :lol: :lol:
זה כבר קרה לי כמה פעמים
אז לאחר כשלוש שעות שאני יושב ומחפש פה ושם ושום דבר לא עוזר..
מצאתי את הפתרון:
בשורה 24 צריך לכתוב results : data ולא data.item
אני העתקתי את הקוד מהתיעוד שלהם, והקוד הזה טוב כשהjson הוא אובייקט יחיד שבתוך אחד הפרמטרים שלו יש מערך של הנתונים. אולם הjson שלי הוא מערך של אובייקטים ישירות, ולכן צריך לכתוב data/
כמו כן, את שורה 32 ושורות 34-41 אפשר למחוק.. אא"כ רוצים להגדיר תבנית מיוחדת להצגת התוצאות (כגון להוסיף תמונה וכדו'.)לילה טוב ומושלג..
פורסם במקור בפורום CODE613 ב26/01/2016 22:20 (+02:00)