برگزیده های پرشین تولز

وب سایت خود را بر پایه ajax بسازید. رفع اشکال ajax با زبان فارسی

ODE112

کاربر قدیمی پرشین تولز
تاریخ عضویت
24 مارس 2006
نوشته‌ها
1,400
لایک‌ها
1,288
محل سکونت
aquarium
یه مشکل که ajax داره اینه که اگه مثلا فایل home.php که قرار لودش کنیم متن فارسی یا روسی یا آلمانی توش باشه بدون اینکه یونیکد بشه لود میشه! تقصیر نداره چون شما اگه صد تا از اینا هم بذارید توی فایلتون و صفحاتتون ajax نمیخونش! یعنی میخونش ولی آزاد نمیشه
کد:
<meta http-equiv="Content-Language" content="en-us">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

اینطوری لود میشه متن فارسی تو ajax

کد:
جمعه میای بریم چوغا سر خر؟ بریم چه غلطی بکنیم؟ بیشعور نمیای نیا به درک

خوب پس باید نوع انکود رو جلوتر مشخص کنیم یعنی از روی سرور با PHP, پس اینو میذاریم بالای بالای فایل home.php و یکی هم بالای فایل index.php که صفحه اصلی سایتمون هست

PHP:
<?php
header('Content-Type: text/html; charset=utf-8');
?>

این برای رفع اشکال تو خوندن بود!

حالا اگه بخوایم با یه فرم که هنوز توضیش ندادم یه متنی رو با HTTP_REQUEST بفرستیم اگه فارسی باشه اینطوری منتقل میشه اگه مرور گر ما اینترنت اکسپلرر باشه!

کد:
?????????????????????????????????????????????????

ولی میشه از بجای فرستادن اطلاعات با GET از POST استفاده کرد تا متن فارسی ما درست به سرور پرتاب بشه
حالا فردا میام اینکه چطوری با POST اطلاعات رو بفرستیم توضیح میدم که فارسیش نریزه به هم....
 

Shahed

کاربر قدیمی پرشین تولز
تاریخ عضویت
30 ژوئن 2003
نوشته‌ها
7,289
لایک‌ها
34
محل سکونت
mt.cgi
به نقل از sixabat :
یه مشکل که ajax داره اینه که اگه مثلا فایل home.php که قرار لودش کنیم متن فارسی یا روسی یا آلمانی توش باشه بدون اینکه یونیکد بشه لود میشه! تقصیر نداره چون شما اگه صد تا از اینا هم بذارید توی فایلتون و صفحاتتون ajax نمیخونش! یعنی میخونش ولی آزاد نمیشه
کد:
<meta http-equiv="Content-Language" content="en-us">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

اینطوری لود میشه متن فارسی تو ajax

کد:
جمعه میای بریم چوغا سر خر؟ بریم چه غلطی بکنیم؟ بیشعور نمیای نیا به درک

خوب پس باید نوع انکود رو جلوتر مشخص کنیم یعنی از روی سرور با PHP, پس اینو میذاریم بالای بالای فایل home.php و یکی هم بالای فایل index.php که صفحه اصلی سایتمون هست

PHP:
<?php
header('Content-Type: text/html; charset=utf-8');
?>

این برای رفع اشکال تو خوندن بود!

حالا اگه بخوایم با یه فرم که هنوز توضیش ندادم یه متنی رو با HTTP_REQUEST بفرستیم اگه فارسی باشه اینطوری منتقل میشه اگه مرور گر ما اینترنت اکسپلرر باشه!

کد:
?????????????????????????????????????????????????

ولی میشه از بجای فرستادن اطلاعات با GET از POST استفاده کرد تا متن فارسی ما درست به سرور پرتاب بشه
حالا فردا میام اینکه چطوری با POST اطلاعات رو بفرستیم توضیح میدم که فارسیش نریزه به هم....
جیگر !
یه نمونه مثال ارسال اطلاعات یه فرم با متد GET و POST با ajax دم دستت داری؟
 

ODE112

کاربر قدیمی پرشین تولز
تاریخ عضویت
24 مارس 2006
نوشته‌ها
1,400
لایک‌ها
1,288
محل سکونت
aquarium
فردا برات میذارم خدای ajax
 

ODE112

کاربر قدیمی پرشین تولز
تاریخ عضویت
24 مارس 2006
نوشته‌ها
1,400
لایک‌ها
1,288
محل سکونت
aquarium
به نقل از gavbandy :
اول باید متن فارسی را اینکودش کنی بعد اون طرف با urldecode بازش کنی
اصلا هم ربطی به اینا که گفتی نداره
با همون انکودی که گفتم حل میشه

قبل از encode یا php
www1.JPG


بعد از encode یا php

www2.JPG

ببخشید دری وری نوشته هول هولکی زدمش

نکنه شما POST کردن اطلاعات رو میگی؟ مگه من در مورد POST کردن چیزی نوشتم تو پست بالا؟ :lol:
 

gavbandy

Registered User
تاریخ عضویت
15 فوریه 2005
نوشته‌ها
364
لایک‌ها
3
شما اول با این کد اینکود میکنی البته با جاوا :
encodeURIComponent()
این میاد نوشته ها و علائم را کد میکنه .
حالا توی php یه چیزی به اسم urldecode() داریم که دقیقا میتونه متن اینکود شده با جاوا به طریقی که گفتم را دیکود کنه.
من خودم همیشه میام محتوا را میگیرم و اینکودش میکنم و بعدش دیکودش میکنم.
فکر کنم طرز اینکود و دیکود کردنش مشابه وقتیه که با یک فرم از طریق متود GET اطلاعات را میفرسته و شما باید اول آدرس را دیکود کنید و بعش هر بلایی که خواستید سرش بیارید.
اگه متوجه نشدی یه سر به http://www.parsibox.com بزن اونجا یه نگاهی به سورسش بکن میفهمی چی شد.
 

ODE112

کاربر قدیمی پرشین تولز
تاریخ عضویت
24 مارس 2006
نوشته‌ها
1,400
لایک‌ها
1,288
محل سکونت
aquarium
دوست من لطفا در تاپیک های من پست نده و اگر تکرار کردی من آموزشم رو ادامه نمیدم!
قرار نیست اینجا برای اینکه بگیم ما هم یه چیزی بلدیم از چیزایی مثله urldecode برای گیج کردن کاربران استفاده کنیم وگرنه اگر قرار کل کل هست شما تاپیک حرفه ای ایجاد کن تا من بیام باهات کل کل کنم که 3 سوت کم میاری از من!

اینجا قراره به ساده ترین شکل ممکن و ساده ترین و آسانترین راه کاربران رو راهنمایی کنم! اسم تاپیک Ajax به زبان ساده هست نه به زبان پیشرفته و گیج کننده!

urldecode برای ارسال فایل استفاده میشه ضمن اینکه مشکلاتی مثلا با علامت + داره که....


خوب فراموش کنید دوستان, ادامه آموزش!

پست کردن اطلاعات به زبان فارسی در Ajax

ابتدا فایل ajax.js از تاپیک قبلی من رو با Dreamweaver باز کنید و در خط 19 به بعد این کد رو اضافه کنید و ذخیره کنید

کد:
function bepost(){
var isiusjz = false;
if (window.XMLHttpRequest)
{isiusjz = new XMLHttpRequest();
if (isiusjz.overrideMimeType)
{isiusjz.overrideMimeType("text/xml"); }
}else if (window.ActiveXObject){try{ isiusjz = new ActiveXObject("Msxml2.XMLHTTP"); 
}catch (e){try{ isiusjz = new ActiveXObject("Microsoft.XMLHTTP"); }catch (e){}}} 
if (!isiusjz)
{ alert("CONNECT FAILURE BABY"); return false; }
isiusjz.open('POST', 'post.php', true);
isiusjz.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
isiusjz.send('message='+document.getElementById('text').value);
document.getElementById('text').value = '';
document.getElementById('send').disabled = 'on';
document.getElementById('send').value = 'SENT';}

حالا فایل ضمیمه این پست رو دانلود و فایل هاش رو در همون فولدری که در تاپیک قبلی ساختید بریزید
یک دیتاباس بسازید به نام post و فایل sql.sql رو بهش ایمپورت کنید

حالا فایل contact.php رو بخونید اینجوری http://localhost.com/contact.php برای مثال

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


حالا به صفحه http://localhost/read.php برید و اونو بخونید

میبینید که متن شما فارسی در دیتاباس ذخیره شده از طریق ajax

به همین سادگی به همین خوشمزگی


بدین ترتیب تاپیک شما زبان فارسی با Ajax به پایان میرسه

( ویژه شاهد که از بیمیس اومده )

سوال ایراد اشکال دارید بپرسید
 

فایل های ضمیمه

  • contact.zip
    1.6 KB · نمایش ها: 50

hba

کاربر فعال صفحات داینامیک
کاربر فعال
تاریخ عضویت
8 آگوست 2004
نوشته‌ها
1,511
لایک‌ها
1
سن
39
محل سکونت
تهران-ونک-php-mysql
ممنون عالی بود ولی مرام دعوا راه نندازید ها

برای من جواب نداد
چرا فایل read توش insert دادی؟
اطلاعات ارسال نمی شه یه بار برسی کن و همه فایل هات رو بزار که کار میکنه
 

Shahed

کاربر قدیمی پرشین تولز
تاریخ عضویت
30 ژوئن 2003
نوشته‌ها
7,289
لایک‌ها
34
محل سکونت
mt.cgi
به نقل از gavbandy :
شما اول با این کد اینکود میکنی البته با جاوا :
encodeURIComponent()
این میاد نوشته ها و علائم را کد میکنه .
حالا توی php یه چیزی به اسم urldecode() داریم که دقیقا میتونه متن اینکود شده با جاوا به طریقی که گفتم را دیکود کنه.
من خودم همیشه میام محتوا را میگیرم و اینکودش میکنم و بعدش دیکودش میکنم.
فکر کنم طرز اینکود و دیکود کردنش مشابه وقتیه که با یک فرم از طریق متود GET اطلاعات را میفرسته و شما باید اول آدرس را دیکود کنید و بعش هر بلایی که خواستید سرش بیارید.
اگه متوجه نشدی یه سر به http://www.parsibox.com بزن اونجا یه نگاهی به سورسش بکن میفهمی چی شد.
من این روشی که شما میگی رو قبلا امتحان کردم و جواب درستی نگرفتم ازش. اما روش علی عملیه.
علی جان ! راستی از بابت اون فرم هم ممنون :D
 

Shahed

کاربر قدیمی پرشین تولز
تاریخ عضویت
30 ژوئن 2003
نوشته‌ها
7,289
لایک‌ها
34
محل سکونت
mt.cgi
علی اون فرم رو من اجرا کردم خوب کار میکنه. یه بار دیگه ممنون.
چند تا سوال داشتم. میشه کاری کرد که موقع سابمیت قشنگ و خوشگل بنویسه loading؟
الان که تا سابمیت میکنیم اطلاعات تو فرم یهو میپرن ! خوب این اصلا قشنگ نیست ! بعدم وقتی ارسال شد باید یه پیغامی چیزی بده که مثلا ساکسیفول !
گرفتی چی میگم؟ اینا چجوری میشه؟

خدایی خدای آژاکسی :D
 

ODE112

کاربر قدیمی پرشین تولز
تاریخ عضویت
24 مارس 2006
نوشته‌ها
1,400
لایک‌ها
1,288
محل سکونت
aquarium
به نقل از Shahed :
علی اون فرم رو من اجرا کردم خوب کار میکنه. یه بار دیگه ممنون.
چند تا سوال داشتم. میشه کاری کرد که موقع سابمیت قشنگ و خوشگل بنویسه loading؟
الان که تا سابمیت میکنیم اطلاعات تو فرم یهو میپرن ! خوب این اصلا قشنگ نیست ! بعدم وقتی ارسال شد باید یه پیغامی چیزی بده که مثلا ساکسیفول !
گرفتی چی میگم؟ اینا چجوری میشه؟

خدایی خدای آژاکسی :D
شاهد جان یه تاپیک قبل از این دادم نوشتم آموزش ajax برای مبتدی ها! توی پست هفتم هشتم که توضیح دادم چجوری لودینگ بذاریم
37.gif
 

ODE112

کاربر قدیمی پرشین تولز
تاریخ عضویت
24 مارس 2006
نوشته‌ها
1,400
لایک‌ها
1,288
محل سکونت
aquarium
به نقل از Shahed :
علی اون فرم رو من اجرا کردم خوب کار میکنه. یه بار دیگه ممنون.
چند تا سوال داشتم. میشه کاری کرد که موقع سابمیت قشنگ و خوشگل بنویسه loading؟
الان که تا سابمیت میکنیم اطلاعات تو فرم یهو میپرن ! خوب این اصلا قشنگ نیست ! بعدم وقتی ارسال شد باید یه پیغامی چیزی بده که مثلا ساکسیفول !
گرفتی چی میگم؟ اینا چجوری میشه؟

خدایی خدای آژاکسی :D
برای اینکه اطلاعات نپره از توی فرم اینو حذف کن از فایل ajax.js

کد:
document.getElementById('text').value = '';
39.gif
39.gif
39.gif
39.gif
39.gif

اینو میگن ماست مالی کردن آموزش
باشه الان دارم سرچ میکنم فرداشب میگم
 

ODE112

کاربر قدیمی پرشین تولز
تاریخ عضویت
24 مارس 2006
نوشته‌ها
1,400
لایک‌ها
1,288
محل سکونت
aquarium
به نقل از hba :
ممنون عالی بود ولی مرام دعوا راه نندازید ها

برای من جواب نداد
چرا فایل read توش insert دادی؟
اطلاعات ارسال نمی شه یه بار برسی کن و همه فایل هات رو بزار که کار میکنه
فایل های این ضمیمه رو ریختی آقا تو فولدری که برای آموزش قبلی ساختی؟
59.gif
 

hba

کاربر فعال صفحات داینامیک
کاربر فعال
تاریخ عضویت
8 آگوست 2004
نوشته‌ها
1,511
لایک‌ها
1
سن
39
محل سکونت
تهران-ونک-php-mysql
علی برای من کار نکرد کل فایل هارو Zip کن بزار برام یا تو شاهد همین رو بزار
 

ODE112

کاربر قدیمی پرشین تولز
تاریخ عضویت
24 مارس 2006
نوشته‌ها
1,400
لایک‌ها
1,288
محل سکونت
aquarium
به نقل از hba :
علی برای من کار نکرد کل فایل هارو Zip کن بزار برام یا تو شاهد همین رو بزار
چشم قربان! ولی الان خونه رفیقمم! فردا صبح حتما ( ببخشید )
 

Shahed

کاربر قدیمی پرشین تولز
تاریخ عضویت
30 ژوئن 2003
نوشته‌ها
7,289
لایک‌ها
34
محل سکونت
mt.cgi
به نقل از hba :
علی برای من کار نکرد کل فایل هارو Zip کن بزار برام یا تو شاهد همین رو بزار
76.gif
 

فایل های ضمیمه

  • ajax contact.zip
    2.1 KB · نمایش ها: 48

Shahed

کاربر قدیمی پرشین تولز
تاریخ عضویت
30 ژوئن 2003
نوشته‌ها
7,289
لایک‌ها
34
محل سکونت
mt.cgi
به نقل از sixabat :
ببین من الان یکم ایده از خودم گذاشتم کنار فرم اینو نوشتم:
HTML:
<div id="stutus" style="display:none">Loading...</div>
بعد تو فایل جاوا اون سطر های پایین اینو اضافه کردم:
HTML:
document.getElementById('stutus').style.display = '';

حالا وقتی سابمیت میکنی مینویسه لودینگ ... اما دیگه نمیره ! همونطور میمونه :D
چیکارش کنم؟
 

Shahed

کاربر قدیمی پرشین تولز
تاریخ عضویت
30 ژوئن 2003
نوشته‌ها
7,289
لایک‌ها
34
محل سکونت
mt.cgi
من فایل ali.js رو کلا برداشتم اما تو کار مشکلی پیش نیومد. اون کدها به این فرم مربوط نیستن. درسته؟
 

ODE112

کاربر قدیمی پرشین تولز
تاریخ عضویت
24 مارس 2006
نوشته‌ها
1,400
لایک‌ها
1,288
محل سکونت
aquarium
به نقل از Shahed :
من فایل ali.js رو کلا برداشتم اما تو کار مشکلی پیش نیومد. اون کدها به این فرم مربوط نیستن. درسته؟
نه ali.js برای دریافت هست!

بابا اینکاره!!!!!!!!!!

قبل از خط
کد:
isiusjz.open('POST', 'post.php', true);

بنویس

کد:
isiusjz.onreadystatechange = Hideloading;


و در آخر آخر فایل ajax,js اینو اضافه کن
کد:
function Hideloading()
{
document.getElementById('stutus').style.display = 'none';
}
 
بالا