שלח תשובה

זירת השאלות

707
צפיות
3
תשובות

שאלה על AJAX

,‏ 7 בינואר, 2007

בניתי קוד ב- PHP שמקבל ב- POST מחרוזת המייצגת שם משתמש, בודקת האם שם המשתמש קיים במסד הנתונים, ומחזירה דף PHP עם נתונים מתאימים.
עד כאן הכל טוב ויפה, עד השלב בו אני ניגש לכתוב את הקוד ב- JS.

ברצוני לכתוב פונקציה ב- JS ששמה isExistUsername המקבלת שם משתמש ובודקת האם הוא קיים במסד הנתונים, ומחזירה true או false בהתאם, וזאת באמצעות AJAX.

אם אני משתמש באירוע onreadystatechange אז הפונקציה isExistUsername לא תדע מה להחזיר, true או false, אלא רק הפונקציה שמטפלת באירוע תדע, וזה לא מה שאני רוצה.
אפשרות השימוש באירוע onreadystatechange נשללת מבחינתי כי לא מעניין אותי שפונקציה אחרת תדע את התוצאה – מעניין אותי שהפונקציה isExistUsername עצמה תחכה לנתונים שיגיעו, תטפל בהם, ותחזיר true או false בהתאם.


function isExistUsername(username){
    var xmlhttp;

    try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); }
      catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); }
      catch (e) { try { xmlhttp = new XMLHttpRequest(); }
      catch (e) { xmlhttp = false; }}}

    xmlhttp.open('POST',"CheckUsername.php",false);
    xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    xmlhttp.send("username=" + username);
    
    // כאן אני צריך לחכות שיגיעו נתונים
    
    // false או true כאן אני צריך להחזיר
}


חיפשתי פיתרון לבעיה בגוגל ולא מצאתי.

תודה מראש!

תגיות:

3 תשובות

  1. שאל אולי בפורום צד שרת
    ajax אומנם *כביכול* מתבצע בצד לקוח, אבל זה יותר עיניין של מתכנתי צד שרת…

  2. חלופה לפונקציה encodeURIComponent ?
    שלום לכולם!

    הבעיה היא כזאת:
    אני רוצה בעזרת האוביקט xmlhttprequest לשלוח נתונים לשרת ולקבל ממנו תשובה.
    את הנתונים שיישלחו אני מקבל כקלט מתיבת טקסט, זאת ללא הגבלה של סוגי התווים המותרים.
    כלומר ~!@#!$ו#^%*)6ח5ק'-/&*_(*)+_ זה גם קלט חוקי מבחינתי וברצוני לשלוח אותו לשרת.
    אז חיפשתי פונקציה מתאימה ב- JS שמקודדת את התווים בדומה ל- URLEncode ב- ASP, ומצאתי את הפונקציה encodeURIComponent. הבעיה היא שהפונקציה לא עובדת ב- IE5 ולכן היא מגבילה את האתר לעבוד רק בגרסה 5.5 ומעלה של IE וזה לא מתאים לי.

    ניסיתי לחפש בגוגל חלופות לפונקציה encodeURIComponent אך ללא הצלחה.
    ניסיתי לכתוב פונקצית קידוד בעצמי בעזרת charCodeAt אבל היא מחזירה איזשהו מספר גדול מ-255 עבור תווים בעברית ולכן גם היא לא מתאימה לי.

    אשמח לקבל פתרון לעניין.
    תודה מראש!

שלח תשובה