ABA


"צריך עזרה קטנה עם AJAX"
גירסת הדפסה        
קבוצות דיון בניית אתרים נושא #14474 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 14474
Groove
חבר מתאריך 6.8.11
219 הודעות
   15:19   10.10.08   
אל הפורום  
  צריך עזרה קטנה עם AJAX  
 
   ערכתי לאחרונה בתאריך 10.10.08 בשעה 15:28 בברכה, Groove
 
אני עושה חיפוש עם suggestions והבעיה היא שהוא לא משנה את הinnerHTML למה שהוא מוצא =\.

קבלו קוד:


function getRightObj()
{
var xmlObj = null;

try
{
// Firefox, Opera 8.0+, Safari
xmlObj = new XMLHttpRequest();
}
catch (e)
{
// Internet Explorer
try
{
xmlObj = new ActiveXObject( "Msxml2.XMLHTTP" );
}
catch (e)
{
xmlObj = new ActiveXObject( "Microsoft.XMLHTTP" );
}
}

return xmlObj;
}

function chkState( spanName )
{
if ( xmlObj.readyState == 4 )
{
document.getElementById( spanName ).innerHTML = xmlObj.responseText;
document.getElementById( spanName ).style.visibility = "visible";
}
}

function suggestQuery ( str, spanName )
{
xmlObj = getRightObj();

if ( xmlObj == null )
{
alert( "Your browser does not support AJAX!" );
return;
}

var url = "search.php";
url += "?q=" + str;
url += "&sid=" + math.random();

xmlObj.onReadyStateChange = chkState( spanName );
xmlObj.open( "GET", url, true );
xmlObj.send( null );
}

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


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  אממ כמה דברים akoka 10.10.08 16:55 1
     thx shpitz :] Groove 10.10.08 20:26 2

       
akoka

   16:55   10.10.08   
אל הפורום  
  1. אממ כמה דברים  
בתגובה להודעה מספר 0
 
   1.המשתנה XMLOBJ לא נשאר גלובאלי אתה מצהיר עליו בפונקציה suggestQuery אבל הוא לא נכנס לscope של שאר הפונקציות ,כדי לסדר את זה שים אותו בscope הגלובאלי של הדף מחוץ לכול הפונקציות.

2.אני חושב שבmath.random זה אמור ליהיות Math.random ויש חשיבות לאות הגדולה בהתחלה.

3.במקום innerHTML עדיף להשתמש בDOM עם createTextNode וcreateElement גם תקין וגם נוח יותר.

4.במקום להשתמש בvisibility תשתמש בdisplay עם block/none.


אגב בנוסף לreadyState תבדוק גם את הסטטוס של הדף עם status.

ומשהו אחרון כתבתי על זה לא מזמן במצב הזה הייתי עובד עם JSON בצד שרת ,ולא מחזיר טקסט רגיל ,אם אתה משתמש בJSON אתה יכול להחזיר את כול התוצאות בתור מערך בJS ואז יותר קל לעבד אותו עם DOM או בלי DOM.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Groove
חבר מתאריך 6.8.11
219 הודעות
   20:26   10.10.08   
אל הפורום  
  2. thx shpitz :]  
בתגובה להודעה מספר 1
 
   קוד מתוקן:

var xmlObj;

function getRightObj( )
{
xmlObj = null;

try
{
// Firefox, Opera 8.0+, Safari
xmlObj = new XMLHttpRequest();
}
catch (e)
{
// Internet Explorer
try
{
xmlObj = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
xmlObj = new ActiveXObject("Microsoft.XMLHTTP");
}
}

return xmlObj;
}

function chkState( )
{
if ( xmlObj.readyState == 4 )
{
document.getElementById("suggest").innerHTML = xmlObj.responseText;
document.getElementById("suggestions").style.display = "block";
}
}

function suggestQuery( str )
{
if ( str.length == 0 )
{
document.getElementById("suggestions").style.display = "none";
return;
}

xmlObj = getRightObj();

if ( xmlObj == null )
{
alert("Your browser does not support AJAX!");
return;
}

var url = "search.php";
url += "?q=" + str;
url += "&sid=" + Math.random();

xmlObj.onreadystatechange = chkState;
xmlObj.open( "GET", url, true );
xmlObj.send( null );
}

function copyQuery( str )
{
document.getElementById("q").value = str;
document.getElementById("suggestions").style.display = "none";
}


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net