PDA

View Full Version : encoding & ajax



web4ir
سه شنبه 01 آبان 1386, 08:44 صبح
سلاممن یه کد ساده آژاکس دارم که دوتافیلد می ریزه تو دیتابیس درستم کار می کرد اما نمی دونم چی شد که یهو کاراکترهارو 1256 می کنه یعنی وقتی اطلاعات را از دیتابیس می خونم 1256 شدن، قبلا درست بود یعنی utf-8 اما یهو خراب شد نمی دونم چه اشتباهی کردم ممنون میشم اگه چیزی به ذهنتون می رسه بگین

Bahram0110
سه شنبه 01 آبان 1386, 09:10 صبح
می تونی کد رو بذاری؟

web4ir
سه شنبه 01 آبان 1386, 09:35 صبح
فرم ورود اطلاعات

<table width="95%" border="0" cellpadding="3" align="center">
<tr>
<td><label>
<select class="TextInput" name="lstSubjectComCodeID" id="lstSubjectComCodeID">
<?php
foreach ($objComCode->Record as $Row)
{
echo "<option value=$Row[ComCodeID]>$Row[Name]</option>";
}
?>
</select>
</label></td>
<td>*موضوع</td>
</tr>
<tr>
<td><label>
<input class="TextInput" name="txtMail" type="text" id="txtMail" size="50" />
</label></td>
<td>*ایمیل</td>
</tr>
<tr>
<td><label>
<textarea class="TextInput" name="txtText" cols="47" rows="5" id="txtText"></textarea>
</label></td>
<td>*متن</td>
</tr>
<tr>
<td colspan="2"><label>
<input class="Botton" name="btnReset" type="reset" id="btnReset" value="ازنو" />
<input class="Botton" name="btnOK" type="submit" id="btnOK" value="ارسال" onClick="CallServer4QA()" />
</label></td>
</tr>
</table>
فایل جاوااسکریپت آژاکس

// QA by AJAX
function CallServer4QA()
{
var myRegMail=/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
var SubjectComCodeID = document.getElementById("lstSubjectComCodeID").value;
var Mail = document.getElementById("txtMail").value;
var Text = document.getElementById("txtText").value;
if (Mail == "" || Text == "")
{
alert("لطفا موارد ستاره دار را وارد کنید");
} else if (!(myRegMail.test(Mail)))
{
alert("لطفا یک ایمیل معتبر وارد کنید");
} else {
var URL = "QA-AJAX.php?SubjectComCodeID=" + SubjectComCodeID + "&Mail=" + Mail + "&Text=" + Text;
myXMLHTTP.open('GET',URL,true);
myXMLHTTP.onreadystatechange = BackServer4QA;
myXMLHTTP.send(null);
}
}
//
function BackServer4QA()
{
if (myXMLHTTP.readystate == 4)
{
var Result = myXMLHTTP.responseText;
document.getElementById("QAMessage").innerHTML = Result;
}
}
//

فایل درج اطلاعات در دیتابیس
$objQA = new MysqlDB();
$objQA->Insert("insert into tblQA (SubjectComCodeID,Mail,Text,Date) values ('". $_GET['SubjectComCodeID'] ."','". $_GET['Mail'] ."','". $_GET['Text'] ."','". $objQADate->CurrentShamsiDate ."')");
echo $objQA->Message;

cybercoder
سه شنبه 01 آبان 1386, 10:19 صبح
هیچ ارتباطی به کد شما نداره.
شما encoding رو برای نمایش انتخاب نمی کنید. و به دست مرورگر میسپارید بنابراین به تشخیص مرورگر بر می گرده.
بهتره به ابتدای صفحتون این کد رو اضافه کنید:


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

موفق باشی

web4ir
سه شنبه 01 آبان 1386, 12:10 عصر
بله فرمایش شما درست این خط رو به ابتدای فایلهای php اضافه کردم البته وقتی به ابتدای فایل js اضافه کردم ارور داد بنابراین برداشتمش اما بازهم درست نشد نکته عجیب اینه که درست کار می کرد اما نمی دونم چه اشتباهی کردم که اینجوری شد

sweb
سه شنبه 01 آبان 1386, 12:51 عصر
قبل از کوئری که به دیتا بیس (MySQL) میدی این و اضافه کن :


SET NAMES `utf8`;

بعد کوئری INSERT رو اضافه کن.

التبه اگه تو ذخیره در دیتا بیست مشکل داری !!!

cybercoder
سه شنبه 01 آبان 1386, 13:02 عصر
بله فرمایش شما درست این خط رو به ابتدای فایلهای php اضافه کردم البته وقتی به ابتدای فایل js اضافه کردم ارور داد بنابراین برداشتمش اما بازهم درست نشد

توجه کنید که اطلاعات قبلی شما با چه کدینگی وارد شده

web4ir
سه شنبه 01 آبان 1386, 13:11 عصر
فکر نمی کنم
به هرحال تست کردم نشد:ناراحت:

Mah
چهارشنبه 17 بهمن 1386, 10:29 صبح
سلام .
فکر کنم این مشکلت را حل کنه .


httpData.open("POST",url,true);
httpData.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
httpData.onreadystatechange = AnswerData;
httpData.send(stData);

cybercoder
چهارشنبه 17 بهمن 1386, 13:45 عصر
یک نگاهی هم به تاریخ پست ها بندازی بد نیست