לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > תכנות ובניית אתרים
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
תגובה
 
כלי אשכול חפש באשכול זה



  #1  
ישן 10-07-2010, 07:42
  PhytoN PhytoN אינו מחובר  
 
חבר מתאריך: 22.06.06
הודעות: 44
jQuery ו- AJAX Comet/Push/HTTP Streaming

שלום לכולם

יכול להיות ש- jQuery לא תומכת בזה?

אני לא מדבר על ה- plugin שמתאים לגרסה 1.2 (עכשיו אנחנו ב1.4.2)...

זה מאוד מוזר לי כי טכנית זה אמור לעבוד...

קובץ ה javascript:
קוד:
function updateList() { $.post( 'ajax.php', {list: $('#list').html()}, function(data) { alert(1); document.getElementById('list').innerHTML = data; updateList(); } ); } updateList();


בקובץ ajax.php יש בעצם כמו שצריך לולאה אינסופית
הלולאה בודקת אם המשתנה list שאני מעביר דרך POST (כמו שניתן לראות) שווה לטקסט הכי עדכני שבמסד, אם הוא שווה (ולכן אין צורך בעדכון) אז זה לוקח השהייה של 5 שניות ואז בודק שוב (בקובץ ajax.php)... כשיש הבדל בין הטקסטים ויש צורך בעדכון זה עוצר את הלולאה, שולח כפלט את הטקסט המעודכן ויוצר בקשה מחדש (ברקורסיה - כמו שניתן לראות בקוד).
הוספתי את ה- alert בשביל debugging והבעיה היא שהוא קופץ כל פחות שניה! לא כל 5 שניות... כלומר הפונקציה הרקורסיבית מתעלמת מהעיכוב שהשרת נותן לה - היא פשוט ממשיכה...
הקובץ ajax.php קיים והjs מזהה אותו אבל כאשר הלולאה היא אינסופית (כשאין תוכן חדש) הוא פשוט מתעלם ושולח שוב בקשות מחדש... כאשר הלולאה נעצרת (כשיש עדכון) זה מעדכן אבל אז שוב חוזר לרצף של בקשות...

איפה הבעיה?
יכול להיות שjquery פשוט לא תומכת בcomet ואאלץ לבצע אותו מחוץ למסגרת שלה?
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #10  
ישן 13-07-2010, 00:01
צלמית המשתמש של Eran
  משתמש זכר Eran Eran אינו מחובר  
 
חבר מתאריך: 27.02.02
הודעות: 4,536
שלח הודעה דרך ICQ אל Eran
בתגובה להודעה מספר 9 שנכתבה על ידי שימי שמתחילה ב "אני משער שזה מה שבלבל..."

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

עוד דרך לבדיקה היא פשוט להריץ את הדף ישירות. כמובן שאם זה יעבוד כמו שאתה רוצה אתה לא אמור לקבל תגובה. תגובה תקבל אך ורק שהמידע השתנה
כדי לפשט את זה תהפוך מPOST ל GET ותכניס את הערך המתאים.


העלאת תאוריה מעניינת שה jQuery שולח לפני שמקבל תשובה.
אז בנוסף אתה יכול למנוע כפילות ע"י יצירת משתנה שאתה מבצע בדיקה בתחילת הפונקציה אם הוא חיובי אז צא מהפונקציה אחרת תגדיר את המשתנה כחיובי ותמשיך בפונקציה
ורק לאחר שאתה מקבל את המידע אז להחזיר את הערך לשלילי ולקרוא שוב לפונקציה..
_____________________________________

[התמונה הבאה מגיעה מקישור שלא מתחיל ב https ולכן לא הוטמעה בדף כדי לשמור על https תקין: http://fresh.clanteam.com/list.png]

[התמונה הבאה מגיעה מקישור שלא מתחיל ב https ולכן לא הוטמעה בדף כדי לשמור על https תקין: http://fresh.clanteam.com/?https://2010-uploaded.fresh.co.il/2010/09/21/52868411.gif,http://www.boredpanda.com/blog/wp-content/themes/mimbo2.2/images/subscribe-panda-605px.png]

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #15  
ישן 11-07-2010, 18:16
צלמית המשתמש של Eran
  משתמש זכר Eran Eran אינו מחובר  
 
חבר מתאריך: 27.02.02
הודעות: 4,536
שלח הודעה דרך ICQ אל Eran
בתגובה להודעה מספר 5 שנכתבה על ידי PhytoN שמתחילה ב "הפונקציה מוגדרת ניסיתי alert..."

מה בסדר??? מה??


אם זה חוזר לך כל שניה זה אומר שהתנאי שהצבת מתקיים עוד לפני שזה מגיע לsleep הראשון..
קוד:
if ($_POST['list'] != $output)

בשביל זה yoavmatchulsky אמר לך לבדוק את הערכים שלך.

2 בעיות יכולות להיות:
1. $_POST['list' אתה לא מקבל את הערך הנכון מהjQuery
2. $output לא מחזיר מידע נכון מה db

לכן הכי פשוט שב ajax.php תציג שניהם
קוד:
exit($_POST['list']. ' - '.$output);

וב alert תציג את הפלט
קוד:
alert(data);

כך תוכל להבין מה שגוי, אולי שניהם :]
בכל אופן הערכים שיחזרו חייבים להיות שונים, כי זה התנאי של סוף הלולאה ב ajax.php
_____________________________________

[התמונה הבאה מגיעה מקישור שלא מתחיל ב https ולכן לא הוטמעה בדף כדי לשמור על https תקין: http://fresh.clanteam.com/list.png]

[התמונה הבאה מגיעה מקישור שלא מתחיל ב https ולכן לא הוטמעה בדף כדי לשמור על https תקין: http://fresh.clanteam.com/?https://2010-uploaded.fresh.co.il/2010/09/21/52868411.gif,http://www.boredpanda.com/blog/wp-content/themes/mimbo2.2/images/subscribe-panda-605px.png]

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #26  
ישן 15-07-2010, 23:56
צלמית המשתמש של Eran
  משתמש זכר Eran Eran אינו מחובר  
 
חבר מתאריך: 27.02.02
הודעות: 4,536
שלח הודעה דרך ICQ אל Eran
בתגובה להודעה מספר 25 שנכתבה על ידי PhytoN שמתחילה ב "..."

אהה בטח השתמשת ב setInterval במקום ב setTimeout.
בגלל זה זה טוחן לך גם את השרת וגם ואת הקליינט.

הפונקציה שלך רצה כל שניה במקום לחכות שתגמר הפונקציה הקודמת ואז לרוץ שוב.

שים לב, ב setTimeout אתה צריך להריץ בסוף הפונקציה בדיוק במקום בו עשית קריאה ישירות לפונקציה (רקורסיה).
זה ממש אותו דבר רק שזה יתן לך את ההשהייה שאתה מגדיר לו.
setInterval לא עובד ככה. קוראים לו פעם אחת (אני מקווה שכך עשית) והוא רץ תמידי מבלי שתקרא לו שוב.
הוא לא מחכה שהפונקציה תגמר ומריץ שוב את הפונקציה לפי הזמן שהוגדר.
_____________________________________

[התמונה הבאה מגיעה מקישור שלא מתחיל ב https ולכן לא הוטמעה בדף כדי לשמור על https תקין: http://fresh.clanteam.com/list.png]

[התמונה הבאה מגיעה מקישור שלא מתחיל ב https ולכן לא הוטמעה בדף כדי לשמור על https תקין: http://fresh.clanteam.com/?https://2010-uploaded.fresh.co.il/2010/09/21/52868411.gif,http://www.boredpanda.com/blog/wp-content/themes/mimbo2.2/images/subscribe-panda-605px.png]

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #28  
ישן 16-07-2010, 00:32
צלמית המשתמש של Eran
  משתמש זכר Eran Eran אינו מחובר  
 
חבר מתאריך: 27.02.02
הודעות: 4,536
שלח הודעה דרך ICQ אל Eran
בתגובה להודעה מספר 27 שנכתבה על ידי PhytoN שמתחילה ב "תוכל להראות לי איך בדיוק? אני..."

זאת הפונקציה המקורית שמראה לך שהדף תמיד בטעינה?
קוד PHP:
 function updateList()
{
    $.
post(
        
'ajax.php',
        {list: $(
'#list').html()},
        function(
data)
        {
            
alert(1);
            
document.getElementById('list').innerHTML data;
            
updateList();
        }
    );
}

updateList(); 



קוד PHP:
 function updateList()
{
    $.
post(
        
'ajax.php',
        {list: $(
'#list').html()},
        function(
data)
        {
            
alert(1);
            
document.getElementById('list').innerHTML data;
            
//setTimeout("updateList()", 1000);
        
}
    );

//A better place to call the function
setTimeout("updateList()"1000);
}

updateList(); 


לפי הסקריפט שלך..
שיניתי את הקריאה לפונקציה בקריאה בדיליי
_____________________________________

[התמונה הבאה מגיעה מקישור שלא מתחיל ב https ולכן לא הוטמעה בדף כדי לשמור על https תקין: http://fresh.clanteam.com/list.png]

[התמונה הבאה מגיעה מקישור שלא מתחיל ב https ולכן לא הוטמעה בדף כדי לשמור על https תקין: http://fresh.clanteam.com/?https://2010-uploaded.fresh.co.il/2010/09/21/52868411.gif,http://www.boredpanda.com/blog/wp-content/themes/mimbo2.2/images/subscribe-panda-605px.png]

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 08:04

הדף נוצר ב 0.09 שניות עם 10 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר