مشکل فارسی با ajax

okokok

New Member
دوستان عزیز من یک فرم تماس با ما دارم که از asp استفاده میکنه و با استفاده از ajax اطلاعات رو میریزه داخل بانک access
خوب من این کار رو میکنم و هیچ مشکلی نیست اما اگه مثلا نام کاربر یا متن که کاربر ارسال میکنه فارسی باشه پس از ارسال اطلاعات به صورت ؟؟؟؟؟؟؟؟؟؟ علامت سوال ذخیره و به نمایش در می اد
بخشی از کدهام
var url='docontactus.asp?name=' + name + '&email=' + email + '&message=' + message + '&sid=' + Math.random(); // prevent caching

objXMLHttp.onreadystatechange = stateChangedregcus;
objXMLHttp.open('get',url,true); // GET method


objXMLHttp.send(null); // always use null for GET method​

به نظ شما چکار باید کرد البته فرمی که اطلاعت رو میگیر ه utf-8 هست و همین طور صفحه ای که ذخیره میکنه
خواهش میکنم منو از این بلاتکلیفی نجات بدید
majidonline_head_go_boom.gif
 

okokok

New Member
من get رو به post تغییر دادم اما هیچ اتفاقی نیافتاد میشه بیشتر توضیح بدید اصلا در صورت تغییر به post قسمت های دیگر کد نیز تغییر خواهد کرد ؟؟
دوستان بزرگوار مرام بزارید
کسی یعنی بلد نیست تا حالا اینجا با ajax فرم فارسی نفرستادید البته اینو هم بگم قبلا این مشکل رو نداشتم یعنی اطلاعات به صورت فارسی ارسال میشد ویندوزم رو که عوض کردم اینطوری شد
 
آخرین ویرایش:

peyman1987

Member
دوست من مطمئن شو که تمام فايلهات ( از فايلهاي asp گرفته تا خود فايل js ) داراي انکودينگ utf-8 باشن.
من که تا حالا توي ايجکس همچين مشکلي نداشتم. قبلا هم يه نفر اين مشکل رو داشت ولي معلوم نشد چي شد.
 

okokok

New Member
بزرگوار چطور میتونم فایل js یونکدش رو utf-8 کنم مگه میشه
دستورش رو برام مینویسی
 

peyman1987

Member
دوست عزيز دستور نميخواد شما فايل رو با notepad باز کن بعد save as کن و از کمبوي encoding گزينه unicode utf-8 رو انتخاب کن.
 
دوست من متد get با post فرق میکنه
یه سرچ کنی نمونش هست

یه دونه هم پیوست کردم از هر دو نمونه استفاده کرده
 

پیوست ها

  • get%post.zip
    1.8 کیلوبایت · بازدیدها: 42

peyman1987

Member
دوست من متد get با post فرق میکنه
یه سرچ کنی نمونش هست

یه دونه هم پیوست کردم از هر دو نمونه استفاده کرده
دوست عزيز ايشون مشکل انکودينگ دارن من نميدونم اين چه ارتباطي با متد POST و GET ميتونه داشته باشه!!!!
 
در متد get اطلاعاتی که می خوایم ارسال بشه به ادرس اضافه میشه و فرستاده میشه
مثلا ادرس درخواستی ما میشه
کد:
index.php?data1=data&dt2=jdaskjsakdja&name=getmethod
خوب حالا خودت ببین میشه اینجوری اطلاعات فارسی رو فرستاد؟

توی متد پست دیگه این اتفاق نمیفته
اصلا شما فرق متد get & post رو می دونی چیه؟
 

okokok

New Member
دوست عزیز من متد رو به post تغییر میدم اما همچنان فرقی نمیکنه
 

peyman1987

Member
در متد get اطلاعاتی که می خوایم ارسال بشه به ادرس اضافه میشه و فرستاده میشه
مثلا ادرس درخواستی ما میشه
کد:
index.php?data1=data&dt2=jdaskjsakdja&name=getmethod
خوب حالا خودت ببین میشه اینجوری اطلاعات فارسی رو فرستاد؟

توی متد پست دیگه این اتفاق نمیفته
اصلا شما فرق متد get & post رو می دونی چیه؟

دوست عزيز شما استادين ولي ميخوام بدونم اصلا تا حالا عبارت urlencode به گوشتون خورده؟؟؟
اگه خورده بود فکر نميکنم همچين نظري ميدادين.
 

okokok

New Member
از urlencode باید کجا استفاده کنم من با asp کار میکنم urlencode در js باید استفاده کرد
من فکر میکنم مشکلم در ارسال اطلاعات در get هست اما نمی دونم چطور post کنم
من اینو چطور تغییرش بدم
var url='docontactus.asp?name=' + name + '&email=' + email + '&message=' + message + '&sid=' + Math.random(); // prevent caching

objXMLHttp.onreadystatechange = stateChangedregcus;
objXMLHttp.open('get',url,true); // GET method
objXMLHttp.send(null); // always use null for GET method
 

peyman1987

Member
دوست عزيز من در جواب اون عزيز گفتم که بايد درباره urlencode تحقيق کنن.
اين متد روي URL ها اعمال ميشه تا تمام کاراکترهاي ارسال شده در آدرس بار استاندارد و قابل فهم باشن و اين به نشانه بهم ريختن لغات فارسي نيست. بلکه اين کار عمدا انجام ميشه تا تمام کاراکترها حالت ANSI داشته باشن.

درباره مشکل شما من فقط ميتونم پيشنهاد کنم از unicode بودن صفحاتتون مطمئن شيد.
توي PHP اين مشکل با همون تغيير انکودينگ حل ميشه.
 

Mikhak

Active Member
اونطوري كه من ميبينم مشكل اصلي مربوط ميشه به url حتي اگه از متد post هم استفاده بشه بالاخره يه آدرس ميفرستيم فرمي رو ارسال نميكنيم كه متغير هاشو به url نبره و وقتي شما از كلمات فارسي تو Url استفاده ميكنين به هر حال ايراد ميده
فكر ميكنم هر چقدر هم با يونيكد صفحه بازي كني هيچ تاثيري رو url نميزاره چون مشكل اصلي از url هستش ميتوني خيلي راحت امتحان كني و يه كلمه فارسي تو براوزر تايپ كني بعد ميبيني به چه حالت عجغ وجغي تبديل ميشه
يكي از راه حل هايي كه به نظر من ميرسه اينه كه كلمات فارسيت و تبديل به كد كني و اونور encode كني تا اصلا تو url كلمه فارسي ارسال نشه
--------------
سينا
 
دوست عزیز هر وقت خواستید یک string رو با اجاکس ارسال کنید و این string بصورت utf-8 انکد شده بود باید از تابع encodeURIComponent استفاده کنید. کافیه که توی جاوااسکریپتتون درست قبل از اینکه مقادیر رو get یا post کنید به این تابع بدین یه چیزی مثل این :
var url='docontactus.asp?name=' + encodeURIComponent(name) + '&email=' + email + '&message=' + encodeURIComponent(message) + '&sid=' + Math.random(); // prevent caching

در ضمن دقت کنید که فایلی که دریافت کننده اطلاعات هست هم انکدینگش utf-8 باشه
 

okokok

New Member
خوب من فههمیدم ممنونم از
post_old.gif
Thursday 08 November 2007, 00:14 #8 peyman1987


مشکلم روی ارسال اطلاعات بود که باید بصورت post ارسال میشد
 
get در کل برای فارسی مشکل نداره ولی خوب روش درستی برای ارسال فرم نیست و محدودیت حداکثر تعداد کارکتر داره که تا اونجایی که یادم باشه 256 کارکتره و متد post هم این مشکل رو نداره و هم از نظر امنیتی و ... بهتره.
و همچنین اگه arabic یعنی windows-1256 رو هم تست کنی ضرر نداره چون در بعضی شرایط که utf-8 مشکل داره arabic درست عمل می کنه ...

ولی خوب هم اینکه به نتیجه رسیدید خوبه
 
آخرین ویرایش:

جدیدترین ارسال ها

بالا