עבור לתוכן

Ajax ומסד נתונים

Featured Replies

פורסם

שלום,

אני מנסה להכניס למסד הנתונים שלי נתונים ע"י כך שאני לא אצטרך לטעון דף אחר.

הבעיה היא שהנתונים הנכנסים למסד הנתונים מופיעים בשלל צורות כמו:

©ž©×ž©

הקוד הבא הוא הסקריפט בצד הלקוח (עמוד HTML):

<script language="javascript">

function AjaxTest(id,id2){
if(!id){getInfo.innerHTML="";return}
getInfo.innerHTML=GetXmlResponse("sA="+id+"&sB="+id2, "test.asp",true)
}

function GetXmlResponse(DataToSend, URL, bText)
{
var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
xmlhttp.Open("POST",URL + '?rand='+ Math.random() ,false);
xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlhttp.send(DataToSend);
return(bText?xmlhttp.responseText:xmlhttp.responseXML);
}


</script>

דף ה HTML מכיל:

<html xmlns="[url]http://www.w3.org/1999/xhtml"[/url] xml:lang="he" >
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

כמו כן ניסיתי לשים את הקונטנט כמו פה:

<meta http-equiv="Content-Type" content="text/html; charset=windows-1255">

אך זה לא עזר.

דף השרת:

<%

sA = request.Form("sA")
sB = request.Form("sB")

Response.ContentType="text/xml"

sSQL = "INSERT INTO `tbl_Test` ( `a`,`b`) VALUES ( '" & sA & "','" & sB & "');"

objConn.Execute sSQL

objConn.Close
set objConn = Nothing

if sA = "ש" then
Response.Write("שלום")
else
Response.Write("aaa1")
end if
%>

*הפתיחה של מסד הנתונים הושמטה בכוונה. התנאי בסוף הקוד הוא כדי לבדוק אם העמוד מבין את מה שאני שולח לו ולבדוק אם הוא מחזיר עברית תקינה. החלק הזה עובד.

ניסיתי עם ובלי:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1255"%>

והתוצאה הייתה זהה.

שימוש בשיטה הישנה עובדת נהדר והנתונים במסד הנתונים מופיעים בעברית כמו שצריך.

**עדכון:

אם אני עושה שימוש בקוד הבא:

<script>
var xmlHttp

function showCustomer(str)
{
var url="test.asp?sid=" + Math.random() + "&q=" + str
xmlHttp=GetXmlHttpObject(stateChanged)
xmlHttp.open("GET", url , true)
xmlHttp.send(null)
}

function stateChanged()
{
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
{
document.getElementById("getInfo").innerHTML=xmlHttp.responseText
}
}

function GetXmlHttpObject(handler)
{
var objXmlHttp=null

if (navigator.userAgent.indexOf("Opera")>=0)
{
alert("This example doesn't work in Opera")
return
}
if (navigator.userAgent.indexOf("MSIE")>=0)
{
var strName="Msxml2.XMLHTTP"
if (navigator.appVersion.indexOf("MSIE 5.5")>=0)
{
strName="Microsoft.XMLHTTP"
}
try
{
objXmlHttp=new ActiveXObject(strName)
objXmlHttp.onreadystatechange=handler
return objXmlHttp
}
catch(e)
{
alert("Error. Scripting for ActiveX might be disabled")
return
}
}
if (navigator.userAgent.indexOf("Mozilla")>=0)
{
objXmlHttp=new XMLHttpRequest()
objXmlHttp.onload=handler
objXmlHttp.onerror=handler
return objXmlHttp
}
}

</script>

אני מקבל את הנתונים במסד הנתונים בעברית, אבל... התנאי בדיקה בסוף לא עובד. הוא לא מזהה שהאות ש=ש.

יש למישהו רעיון ?

פורסם

הייתה לי בידיוק אותה הבעיה. היא נפתרה ע"י השמת הCODEPAGE בתג שמורה לשרת שאתה משתמש בVBSCRIPT וע"י השמת התגMETA עם הCODEPAGE בדף שאתה שולח ממנו את הנתונים. אני לא יכול להצביע בידיוק על הפתרון(מכיוון שניסיתי את שניהם ביחד).

פורסם
  • מחבר

לפעמים אני מקבל שגיאה של:

System error: - 1072896748

שזה לפי חיפוש בגוגל תוצאה של העברית שעמוד מנסה לקבל.

פורסם

דבר אחד חשוב לא רשמת - באיזה קידוד מאוחסנים הנתונים על מסד הנתונים?

כל עוד תשמור על עקביות בכל הרמות - בDB, בVB, בXML ובHTML הכל אמור לעבוד.

דרך אגב, לא חסר לך Response.charset=XXX בצד השרת?

פורסם

החלק הזה עובד.

...

אבל... התנאי בדיקה בסוף לא עובד. הוא לא מזהה שהאות ש=ש.

עובד או לא עובד? בכל מקרה, תבדוק איך הוא מציג לך את מה שהכנסת במסד הנתונים. אם אתה רואה גיבריש, סימני שאלה או עברית.

פורסם
  • מחבר

טוב, לאט לאט העניינים מתחילים להסתדר.

בדף ה asp הוספתי:

response.Charset="iso-8859-8"

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

עכשיו נותרה רק עוד בעיה אחת והיא בקוד הבא:

if sQ = "ש" then
Response.Write("שלום")
else
Response.Write(sQ & " | ")
Response.Write("ש | ")
Response.Write(objRs("test"))
Response.Write(" | aaa1")
end if

מה שאני מקבל כתשובה לקלט "ש" זה:

ש | © | עכדעשגעכגשכעגש | aaa1

כלומר האות "ש" שאני רוצה להחזיר מדף ה asp לא בקידוד הנכון.

כל השאר תקין.

הטקסט המופיע במסד הנתונים נשלף בסדר וכמו כן הקלט שנתתי נראה בסדר.

אם אני מוסיף בדף ה asp את:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1255"%>

אז בנוסף הטקסט שאני שולף ממסד הנתונים מגיע כסימני שאלה, לכן אני לא רושם את זה שם.

פורסם

תנסה לשמור על עקביות בקידוד שלך. אל תערבב בין ה1255 של הWIN לבין הISO. תבחר אחד ותשתמש רק בו.

פורסם
  • מחבר

טוף חברים, עכשיו זה עובד כמו שצריך.

הבעיה הייתה די מפגרת.

אני משתמש ב Dreamweaver עד כמה שהתוכנה הזו נוחה היא עושה צרות עם עברית לפעמים.

כל מה שהייתי צריך לעשות זה לעשות שינוי ב Title/Encoding בתוכנה וזה עבד (למרות שלא ראיתי כל שינוי בקוד של דף ה asp)

:kopfpatsch::s07:

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים