PDA

View Full Version : سوال: مشکل با alert



crafcrab
سه شنبه 17 آبان 1390, 20:25 عصر
سلام دوستان
این کد کار میکنه:


<p onclick="alert('yaبايd');">ديدن پيام</p>


ولی

چرا alert نمیتونه این پیغام رو نمایش بده:


<p onclick="alert('yaبا
يd');">ديدن پيام</p>


یعنی مشکل بخاصر ترکیب فارسی با انگلیسی هست ؟
یا
اینتر بینشون ؟

کارم گیره چیکار کنم ؟

مثلا
کاربر یه پیغام برای مدیر سایت مینویسه بعد اون پیام که ممکنه هم فاری باشه هم انگلیسی در پایگاه داده ذخیره میشه
برای نمایش پیغام به مدیر وقتی مدیر روی اسم فرستنده نامه کلیک میکنه میره متن رو از دیتابیس میخونه (ajax) و با alert
متن پیام رو به کاربر نشون میده
با متن هایی که فقط فارسی یا فقط انگلیسی باشه و اینتر خورده باشه فکر نکنم مشکل داشته باشه وقتی دو زبان باشه که اینتر داشته باشه این مشکل پیش میاد

mehdi.mousavi
شنبه 21 آبان 1390, 12:03 عصر
سلام.
ابتدا این مساله رو در نظر بگیرید که کاربر ممکنه هر (به ظاهر) پیامی رو وارد کنه، در نتیجه ارسال اون (به ظاهر) پیام به سمت Client بدون اینکه اونو Encode کنیم، کار صحیحی نیستش... از این مساله که بگذریم، کد شما باعث میشه تا دستور alert به دو خط شکسته بشه (بدلیل وجود LF در پیام)، در صورتیکه شما باید LF رو به \n تبدیل کنید تا مشکلی پیش نیاد. به کد زیر دقت کنید:

alert('line#1, \nnew line');

این کد بدون اشکال، خط اول رو نوشته و سپس در خط بعدی عبارت new line رو مینویسه... بنابراین، باید سمت سرور LF رو به \n تبدیل کنید تا مشکل رفع بشه.

موفق باشید.

crafcrab
شنبه 21 آبان 1390, 20:26 عصر
من قبل از ذخیره در دیتابیس در php این کا رو کردم بازم نشد :


$Message=="متن";
$Message=str_replace (chr(13),"\n",$Message);

mehdi.mousavi
یک شنبه 22 آبان 1390, 11:13 صبح
سلام.
من PHP نمیدونم، اما اگر اینم مثل C++ باشه، باید جای \n رشته \\n (دقت کنید، دو تا Backslash) رو بنویسید تا \n به خروجی ارسال بشه...
لطفا str_replace رو بر اساس چیزی که گفتم تغییر بدید و مجددا آزمایش کنید.

موفق باشید.