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

הוסטס - פורום אחסון האתרים הגדול בישראל (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=53784)

NoMore 15-09-07 22:13

AJAXולולאות
 
היי
אני צריך קצת עזרה
אני רוצה שהדף יציג הודעה מסויימת
ובזמן הזה יעשה לולאה שתפעיל קובץ PHP מסויים, ותקבל ממנו ערך, וכשהיא תקבל ממנו ערך מסויים תוצג הודעה אחרת
(נגיד הקובץ סופר עם SESSION או משהו מ1 עד 100 וכשהוא מגיע ל100 זה מציג הדעה אחרת

אפשרי? איך?

-roee- 15-09-07 22:43

בוודאי שאפשרי, זה הבסיס של ה AJAX.
אתה אומר לו לפתוח קובץ PHP מסויים ובו אתה פשוט כותב מה שאתה צריך בין אם זה לולאה ובין אם זה כל דבר אחר.

RS324 16-09-07 17:23

תעשה פונקציה לדוגמא שעושה בקשות לדף (בבעזרת AJAX)
ואז תפעיל פונקציה אחרת בעזרת SETINTERVAL שבודקת אם מספר מסויים הגיע ל X ואם לא היא מפעילה את הפונקציה של ה AJAX אם כן היא עושה CLEARINTERVAL

NoMore 17-09-07 00:14

אני מנסה, אבל זה גורם לדפדפן לקרוס
איפה אפשר לראות משהו דומה?

NoMore 17-09-07 19:00

אי אפשר לערוך :\
אני התקדמתי קצת, אני מצליח לגרום לפלט לצאת לspan ולinput
אבל אני יכול לגרום לפלט לצאת למשתנה בJS?
הקוד שלי:
קוד:

var http;
function engine(){
    var http=null;
    try{
        // Firefox, Opera 8.0+, Safari
        http=new XMLHttpRequest();
    } catch(e){
        try{
            // Internet Explorer
            http=new ActiveXObject("Msxml2.XMLHTTP");
        } catch(e){
            // Internet Explorer
            http=new ActiveXObject("Microsoft.XMLHTTP");
        }
    }
    return http;
}
function ready(){
        if(http.readyState==4){
      document.getElementById("output").innerHTML=http.responseText;
    }
}
function send(i){
    http=engine();
    if(http==null){
        alert("Your browser does not support AJAX!");
        return;
    }
    http.onreadystatechange=ready;
    http.open("GET","out.php?i=" + i,true);
    http.send(null);
}

הפונקציה send מופעלת בonLoad של הbody

somebody 17-09-07 22:51

ציטוט:

נכתב במקור על ידי NoMore (פרסם 556884)
אי אפשר לערוך :\
אני התקדמתי קצת, אני מצליח לגרום לפלט לצאת לspan ולinput
אבל אני יכול לגרום לפלט לצאת למשתנה בJS?
הקוד שלי:
קוד:

var http;
function engine(){
    var http=null;
    try{
        // Firefox, Opera 8.0+, Safari
        http=new XMLHttpRequest();
    } catch(e){
        try{
            // Internet Explorer
            http=new ActiveXObject("Msxml2.XMLHTTP");
        } catch(e){
            // Internet Explorer
            http=new ActiveXObject("Microsoft.XMLHTTP");
        }
    }
    return http;
}
function ready(){
        if(http.readyState==4){
      document.getElementById("output").innerHTML=http.responseText;
    }
}
function send(i){
    http=engine();
    if(http==null){
        alert("Your browser does not support AJAX!");
        return;
    }
    http.onreadystatechange=ready;
    http.open("GET","out.php?i=" + i,true);
    http.send(null);
}

הפונקציה send מופעלת בonLoad של הbody

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

NoMore 17-09-07 23:22

עכשיו יש בעיה אחרת
יש לי דף, out.php
PHP קוד:

<?php
if($_GET['i']>=10){
    echo 
"DONE";
} else {
    
$i=$_GET['i']+1;
    echo 
$i;
}
?>

ואת הקוד

קוד:

var http;
var out;
function engine(){
    var http=null;
    try{
        // Firefox, Opera 8.0+, Safari
        http=new XMLHttpRequest();
    } catch(e){
        try{
            // Internet Explorer
            http=new ActiveXObject("Msxml2.XMLHTTP");
        } catch(e){
            // Internet Explorer
            http=new ActiveXObject("Microsoft.XMLHTTP");
        }
    }
    return http;
}
function ready(){
        if(http.readyState==4){
      out=http.responseText;
    }
}
function send(i){
    http=engine();
    if(http==null){
        alert("Your browser does not support AJAX!");
        return;
    }
    http.onreadystatechange=ready;
    http.open("GET","out.php?i=" + i,true);
    http.send(null);
}
function play(i){
        out=i;       
        while(out!="DONE"){
                send(out);
                document.getElementById("output").innerHTML=document.getElementById("output").innerHTML + "|";
                alert(out);
        }
}

עובד פרפטק, מראה 10 קווים
מוריד את הalert הלולאה לא נגמרת
מה לעשות?

RS324 17-09-07 23:32

כי OUT מקבל את I שזה מספר והוא בחיים לא יהיה DONE אלא אם כן תשנה אותו.

NoMore 17-09-07 23:33

הוא יהיה DONE בגע שישלחו לעמוד I=10
וחוץ מזה, כשאני שם ALERT זה כן עובד :\


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

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