
11-08-2006, 13:44
|
|
|
|
חבר מתאריך: 29.03.03
הודעות: 574
|
|
|
העברת עברית ב-XMLHttp ללא שינוי קידוד
שלום לכם.
באתר שמקודד בקידוד ISO-8859-8-I, יש צורך להוסיף סקריפט שיפעל בשיטת AJAX.
מכיוון שאיני מעוניין בשינוי הקידוד כרגע, ניסיתי לבנות דוגמא קטנה כדי לבדוק איך אפשר להסתדר עם העניין. הדוגמא רק שולחת טקסט שנכתב בתיבת טקסט לשרת ב-POST, השרת מדפיס את הטקסט שהוא קיבל, והוא חוזר לדף ומוקפץ ב-alert.
משום מה, לא הצלחתי עדיין לסדר עברית למרות שניסיתי מספר דברים כמו encodeURI וכו'.
הבעיה כנראה בשליחת הנתונים, כי כאשר בשרת אני כותב למשל
echo "שלום";
העברית בלקוח נראית ללא בעיות.
קוד הלקוח:
קוד:
<?php
header("Content-type: text/plain; charset=ISO-8859-8-I");
?>
<html dir="rtl">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-8-I" />
<script>
var xmlHttp
function sendform()
{
xmlHttp=GetXmlHttpObject()
if (xmlHttp==null)
{
alert ("Browser does not support HTTP Request")
return
}
str="str="+encodeURIComponent(document.test.str.value);
var url="testsrv.php"
url=url+"?sid="+Math.random()
xmlHttp.onreadystatechange=stateChanged
xmlHttp.open("POST",url,true)
xmlHttp.setRequestHeader("Content-Type",
"application/x-www-form-urlencoded; charset=ISO-8859-8-I");
xmlHttp.send(str);
}
function stateChanged()
{
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
{
alert(xmlHttp.responseText);
}
}
function GetXmlHttpObject()
{
var objXMLHttp=null
if (window.XMLHttpRequest)
{
objXMLHttp=new XMLHttpRequest()
}
else if (window.ActiveXObject)
{
objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP")
}
return objXMLHttp
}
</script>
</head><body>
<form name="test"><input type="text" name="str" />
<input type="button" name="submit" value="Send" onclick="sendform();">
</form>
</body></html>
קוד השרת:
קוד:
<?php
header("Content-type: text/plain; charset=ISO-8859-8-I");
echo urldecode($_POST["str"]);
?>
תודה.
_____________________________________
|