הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   בעיה ב AJAX (https://hosts.co.il/forums/showthread.php?t=87170)

gillllll 01-01-11 14:44

בעיה ב AJAX
 
קוד:


function ajaxsend(url,sid){
alert("start");
    if (window.XMLHttpRequest){
        // code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp=new XMLHttpRequest();
    }
    else if (window.ActiveXObject) {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.open("get",url,false);
    xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    var loader= "<img src=\'/images/ajax-loader.gif\'>"

    xmlhttp.onreadystatechange = function() {
        if (this.xmlhttp.readyState == 4) {
            document.getElementById(sid).innerHTML=this.xmlhttp.responseText;
            alert(sid);
        }
        else{
            document.getElementById(sid).innerHTML=loader;
            alert(sid);
        }
    }
    xmlhttp.send(null);
}
//-->
</script>

אוקיי הבעיה שלי (לאחר בדיקה של הקוד באמצעות ההודעות התראה שהכנסתי בקוד (כפי שתוכלו לראות) היא שפונקציה שבודקת באיזה מצב האובייקט נמצא לא פועלת והוא לא נכנס אליה אף פעם כלומר ה IF של READYSTATE הוא אפילו לא מגיע אליו.

הרעיון בפונקציה בכלליות זה באמצעות לינק לשלוח נתונים בGET ובזמן שהשרת מחזיר תשובה שיופיע תמונת טעינה , הבעיה שהפעולה של שליחת הנתונים מתבצעת ,אך העדכון נתונים לפי המצב של הבקשה בתוך הHTML עצמו לא מתעדכן כלומר בכלל לא נכנס ל IF שדיברתי עליו בהתחלה.
מישהו יכול לחשוב על סיבה?

BlueNosE 01-01-11 16:13

סתם שאלה, למה להסתבך בלהשתמש בזה במקוםלעבוד עם ספריה מוכנה שתומכת בAjax כמו jQuery או prototype?

(האמת שלצורך שימוש שוטף הייתי ממליץ בחום עלjQuery, לעומת זאת לצורך Ajax בלבד prototype יותר טובה)

gillllll 01-01-11 17:34

ואם בכל זאת... :)

gillllll 02-01-11 00:18

אוקיי נמצא
 
נמצא הפתרון...
למי שזה מעניין אותו...
Note: When you use async=false, do NOT write an onreadystatechange function - just put the code after the send() statement:

BlueNosE 02-01-11 01:29

אממ, Asynchronous JavaScript and XML כשאתה מגדיר async=false זה לא Ajax :)
ההבדל הוא שAjax ממשיך את פעולת העמוד (ובגלל זה צריך לחכות לסיום התהליך), בעוד בקשה סינכרונית מחכה לתגובה מהשרת ורק לאחר מכן ממשיכה את הפעילות של העמוד.

אבל שמח שהסתדרת.


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

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