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

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

FuZuL 10-12-07 06:49

שאלה בajax | האם זה אפשרי
 
לעשות בAJAX וPHP,
לבדוק אם checkbox במצב checked הופך להיות במצב unchecked..
כאילו מבטלים סימון, ואם ביטלו שזה יריץ איזה קובץ php..
זה אפשרי? ואם אפשר הסבר איך הevents עובדים.

חיים 10-12-07 14:05

אתה עושה onclick ואז בודק אם הוא מסומן או לא אם לא אתה שולח בקשת XMLHTTP לקובץ PHP ומעבד את מה שמתקבל דוגמה לקוד כזה:
HTML קוד:

<script language="javascript">
var xmlHttp = createXmlHttpRequestObject();
function createXmlHttpRequestObject() {
  // will store the reference to the XMLHttpRequest object
  var xmlHttp;
  // this should work for all browsers except IE6 and older
  try
  {
    // try to create XMLHttpRequest object
    xmlHttp = new XMLHttpRequest();
  }
  catch(e)
  {
    // assume IE6 or older
    var XmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0",
                                    "MSXML2.XMLHTTP.5.0",
                                    "MSXML2.XMLHTTP.4.0",
                                    "MSXML2.XMLHTTP.3.0",
                                    "MSXML2.XMLHTTP",
                                    "Microsoft.XMLHTTP");
    // try every id until one works
    for (var i=0; i<XmlHttpVersions.length && !xmlHttp; i++)
    {
      try
      {
        // try to create XMLHttpRequest object
        xmlHttp = new ActiveXObject(XmlHttpVersions[i]);
      }
      catch (e) {} // ignore potential error
    }
  }
  // return the created object or display an error message
  if (!xmlHttp)
    alert("Error creating the XMLHttpRequest object.");
  else
    return xmlHttp;
}
function check(box){
 
 if(!box.checked){
  alert('checked');
  if(xmlHttp.readyState == 4 || xmlHttp.readyState == 0){
  xmlHttp.open("GET","ajax.php?check=true",true);
        xmlHttp.onreadystatechange = onready;
        xmlHttp.send(null);
        }else
        setTimeout("check(box)",1000);
     
 }
}
function onready(){
 if(xmlHttp.readyState==4){
        if(xmlHttp.status==200){
            var div = document.getElementById('div');
            div.innerHTML = xmlHttp.responseText;
        }else
            alert('error in AJAX');
    }
}
</script>

<input type="checkbox" onclick="check(this)" />

**הקוד נבדק חלקית**
אתה מוזמן להשתמש בו רק לעשות קצת שינויים ;)

FuZuL 10-12-07 17:39

קודם כל תודה רבה

setTimeout("check(box)",1000);
תשמע יהיה לי בערך 100checkboxs בעמוד, זה הכרחי הtimeout?

חיים 10-12-07 19:17

ציטוט:

נכתב במקור על ידי FuZuL (פרסם 589428)
קודם כל תודה רבה

setTimeout("check(box)",1000);
תשמע יהיה לי בערך 100checkboxs בעמוד, זה הכרחי הtimeout?

אני חושב שכן כי זה בעצם אם ה-AJAX עוד לא מוכן אז זה מנסה אחרי שנייה
אתה יכול להעיף את זה אבל יש מצב שזה יגרום לבעיות

orlupo 12-12-07 12:27

לא צריך שום timeout. תעשה:

קוד:

xmlHttp.onreadystatechange=function()
{
if(xmlHttp.readyState==4)
  {
  // עיבוד של הנתונים
  }
}


BlueNosE 12-12-07 13:26

ציטוט:

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

אה?

onload = check;
לא יותר פשוט?

ד"א
תנסה לעבוד מול prototype או mootools עם AJAX, זה פשוט מסובך מדי ככה.

FuZuL 12-12-07 21:30

ציטוט:

נכתב במקור על ידי BlueNosE (פרסם 590270)
אה?

onload = check;
לא יותר פשוט?

ד"א
תנסה לעבוד מול prototype או mootools עם AJAX, זה פשוט מסובך מדי ככה.

אתה יכול להרחיב, כי אני לא רואה את התמונה המלאה.
אני צריך לבדוק אם הורידו סימון בcheckbox מסומן.


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

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