הודעת השגיאה שאני מקבל היא: Microsoft VBScript runtime error '800a01b6' Object doesn't support this property or method /admin/categoriesHandler.asp, line 17
עכשיו אני לא מקבל הודעת שגיאה אבל.. השם לא נכנס למאגר ואם אני מדפיס את ה SQL זה נראה כאילו השם לא עבר בכלל למשפט ה SQL. זה כן עובד אם אני מנטרל את הפונקצייה מהשם.
הבעייה היא שוב אותה בעייה… אני משתמש בפונקצייה להחלפת התווים וכשאני שולח להכנסה אין לי שום הודעת שגיאה אבל אותו שדה (שם המשתמש) יחיד שעליו מופעלת הפונקצייה לא מראה לי כלום בשליפה.
31 תשובות
הנה הקוד
יצירת תקייה:
Set FSO = CreateObject("Scripting.FileSystemObject")
FSO.CreateFolder(Server.MapPath("") & "NewFolderName")
Set FSO = Nothing
מחיקת תקייה:
Set FSO = CreateObject("Scripting.FileSystemObject")
FSO.DeleteFolder(Server.MapPath("") & "DeleteFolderName")
Set FSO = Nothing
מקווה שזה יעזור.
אחלה, תודה
פוקקת.
יענו?
בעייה עם RegExp…
יש לי קוד להחלפת גרש ותווים אחרים אבל משום מה זה לא עובד לי.
הנה הקוד:
FUNCTION cleanupString(my_string)
DIM oRegExp, sCleaned
oRegExp = NEW RegExp ————– line 17
oRegExp.Global = TRUE
oRegExp.IgnoreCase = FALSE
oRegExp.Pattern = "[>]"
sCleaned = oRegExp.Replace(my_string, ">")
oRegExp.Pattern = "[<]"
sCleaned = oRegExp.Replace(sCleaned, "<")
oRegExp.Pattern = "[']"
sCleaned = oRegExp.Replace(sCleaned, """)
oRegExp.Pattern = "[&]"
sCleaned = oRegExp.Replace(sCleaned, "&")
cleanupString = sCleaned
END FUNCTION
הודעת השגיאה שאני מקבל היא:
Microsoft VBScript runtime error '800a01b6'
Object doesn't support this property or method
/admin/categoriesHandler.asp, line 17
מה הבעייה פה?
מה פיספסתי?
תודה!
למיטב ידיעתי הפונקציה replace
שייכת לאובייקט STRING
וב-VBS בכלל זו סתם פונקציה על מחרוזות שלא מקשרת לשום אובייקט (למרות שהיא מחליפה רק לסטרינגים)
str = replace(str, "someText", "someText1")
אתה בשאלות הנפוצות של מדור ASP
מלשון פאק (FAQ)
הבעייה מתעוררת עוד לפני שזה מגיע…
ל REPLCAE
אה, סבבה…
שכחת לשים SET
איפה ה SET צריך להיות?
שורה 17
שורה 17.
אם אני לא טועה, זה צריך להיות:
Set oRegExp = NEW RegExp
נסה את זה:
FUNCTION cleanupString(my_string)
DIM oRegExp, sCleaned
set oRegExp = NEW RegExp
oRegExp.Global = TRUE
oRegExp.IgnoreCase = FALSE
oRegExp.Pattern = ">"
sCleaned = oRegExp.Replace(my_string, "& gt;")
oRegExp.Pattern = "<"
sCleaned = oRegExp.Replace(sCleaned, "& lt;")
oRegExp.Pattern = "'"
sCleaned = oRegExp.Replace(sCleaned, """)
oRegExp.Pattern = "&"
sCleaned = oRegExp.Replace(sCleaned, "& amp;")
cleanupString = sCleaned
END FUNCTION
עשיתי רווח אחרי ה & כדי שוובמאסטר לא יחליף.
הערה קטנה
בשביל רפלייס פשוט חבל להשתמש ב RegExp ב VBS.
מה אתה היית עושה במקום RegExp?
עכשיו אני לא מקבל הודעת שגיאה אבל..
השם לא נכנס למאגר ואם אני מדפיס את ה SQL זה נראה כאילו השם לא עבר בכלל למשפט ה SQL.
זה כן עובד אם אני מנטרל את הפונקצייה מהשם.
מה זה יכול להיות?
לדעתי עדיף ריפלייס רגיל
יותר פשוט ונוח.
str = Replace(str,"<","& lt;")
str = Replace(str,">","& gt;")
str = Replace(str,"&","& amp;")
str = Replace(str,"'",""")
הנה הטעות שלך
תחליף את הקוד:
sCleaned = oRegExp.Replace(my_string, "& gt;")
לזה:
sCleaned = oRegExp.Replace(sCleaned, "& gt;")
אבל איך אז אני שם את זה
בתוך פונקצייה?
יש איזו סיבה אחרת מעבר ליותר פשוט ונוח למה זה עדיף?
תודה
RegExp בVBS הוא דבר די איטי
ובמקרה של רפלייס מיותר להשתמש בו.
לא הבנתי את הבעייה שלך
אז בכל זאת אני עושה את הריפלייס
מבלי להשתמש ב RegExp?
המנה
FUNCTION cleanupString(my_string)
sCleaned = Replace(my_string,">", "& gt;")
sCleaned = Replace(sCleaned,"<", "& lt;")
sCleaned = Replace(sCleaned,"'", """)
sCleaned = Replace(sCleaned,"&", "& amp;")
cleanupString = sCleaned
END FUNCTION
(ושכחתי להגדיר את sCleaned)
למה עשית בסוף הפונקצייה…
cleanupString = sCleaned
הבעייה היא שוב אותה בעייה…
אני משתמש בפונקצייה להחלפת התווים וכשאני שולח להכנסה אין לי שום הודעת שגיאה אבל אותו שדה (שם המשתמש) יחיד שעליו מופעלת הפונקצייה לא מראה לי כלום בשליפה.
זה עדיין קורה, למה?
אתה משתמש בריפלייס
שציינתי או במקור של הדיון שלך ?
תציג את הקוד שלך לאחר השינויים.
פונקציה צריכה להחזיר משהו…
הנה…
הפונקצייה:
FUNCTION cleanUp(myString)
sCleaned = Replace(myString,">", "& gt;")
sCleaned = Replace(sCleaned,"<", "& lt;")
sCleaned = Replace(sCleaned,"'", """)
sCleaned = Replace(sCleaned,"&", "& amp;")
cleanupString = sCleaned
END FUNCTION
ה SQL:
SQL = "INSERT INTO tstTBL (name) VALUES('" & cleanUp(name) & "')"
מה הבעייה פה?
נסה את זה
Function cleanUp(myString)
If IsEmpty(myString) Then Exit Function
sCleaned = myString
sCleaned = Replace(sCleaned,">", "& gt;")
sCleaned = Replace(sCleaned,"<", "& lt;")
sCleaned = Replace(sCleaned,"'", """)
sCleaned = Replace(sCleaned,"&", "& amp;")
cleanUp = sCleaned
End Function
חייב לעבוד לך.
בנוסף, הוספתי לך משפט IF שבודק אם הערך ריק על מנת לחסוך לך שגיאה במידה והוא אכן ריק.
סבבה, עכשיו זה עובד! אבל…
למה הבעייה הזו קיימת?
ככה זה עובד גם אצלך?