article

نمایش پیام در حال بارگذاری با ای جکس (Ajax)

ajax-loading

در مطالب پیشین از بخش آموزش مقدماتی ای جکس (Ajax) در خصوص متد readyState و متد onreadystatechange که مبتنی بر رویداد بود به صورت مختصر صحبت کردیم، گفتیم که در ای جکس وضعیت با متد readyState بررسی می شود که نتیجه یک عدد بین 0 تا 4 است، onreadystatechange نیز تابعی از نوع EventHandler یا مدیریت کننده رویداد است که با تغییر هر شماره از 0 تا 4 اجرا می شود و می تواند درون خود شامل هر کدی باشد که نیاز برنامه ما اقتضاء می کند، به طور مثال با وجود این دو قابلیت می توانیم از زمان اجرای تابع ارسال درخواست ای جکس (کد وضعیت 1) تا زمان دریافت کامل پاسخ سرور (کد وضعیت 4) پیامی مبنی بر در حال پردازش بودن درخواست یا در حال بارگذاری بودن اطلاعات از سرور به کاربر نمایش دهیم که این کار باعث بهبود رابط کاربری برنامه خواهد شد و به نظر امکان ضروری در هنگام استفاده از صفحات مبتنی بر فناوری ای جکس است.

درخواست ای جکس و کدهای وضعیت readyState


پس از شروع ارسال درخواست ای جکس از سمت کاربر به سمت سرور فرآیندی طی می شود تا نتیجه درخواست به صفحه مرورگر کاربر برگردانده شود، هر مرحله از این فرآیند با یک عدد از 0 تا 4 مشخص می شود که در متد readyState قابل دریافت است، عدد 0 وضعیت UNSENT را نشان می دهد که یعنی متد open در مرورگر ساخته شده اما هنوز فراخوانی نشده است، عدد 1 وضعیت OPENED را نشان می دهد یعنی متد open فراخوانی شده، عدد 2 نشانگر وضعیت HEADERS_RECEIVED است یعنی متد send فراخوانی شده و سربرگ های HTTP و پاسخ سرور آماده است، عدد 3 نشانگر وضعیت Downloading است، یعنی مرورگر در حال دریافت مقادیر ارسال شده از سرور به عنوان پاسخ است، در گام آخر برای اینکه بررسی کنیم همه چیز مرتب است readyState باید DONE یا کامل باشد، حالت کامل با عدد 4 دریافت می شود و با شرط ساده if برابری آن را بررسی می کنیم (که آیا xmlHttp.readyState برابر 4 است یا خیر)، به این صورت موقعی که همه فعل و انفعالات به پایان می رسد xmlHttp.readyState برابر 4 خواهد بود و این قانونی قراردادی در ای جکس است، با دقت در فرآیند بالا متوجه می شویم که پیش از اتمام فعل و انفعالات اعداد وضعیتی 1 تا 3 وجود دارند که می توانیم بر مبنای آنها پیامی مبنی بر در حال پردازش یا در حال بارگذاری بودن اطلاعات را به کاربران نمایش دهیم، بر همین مبنا بخش اصلی این کد به صورت زیر خواهد بود:
if(xmlHttp.readyState > 0 && xmlHttp.readyState < 4){
   document.getElementById(id).innerHTML = message;
}
کد بالا یک شرط if در جاوا اسکریپت است و به زبان ساده یعنی اگر xmlHttp.readyState بزرگتر از 0 و کوچکتر از 4 باشد با استفاده از متد innerHTML مقادیر پیام موجود در متغیر message را به عنصر هدف که با متد document.getElementById مشخص می شود نسبت می دهیم، آرگیومنت این متد باید id تگ HTML هدف باشد، به این ترتیب پس از ارسال درخواست ای جکس پیامی خواهیم داشت که به کاربر می گوید اندکی صبر کند تا پردازش کامل شود، از تکنیک بالا در مثال زیر استفاده کرده ایم و در این کد درخواستی را به یک فایل PHP ارسال کرده و پاسخ را در یک بلاک div خروجی داده ایم.

فایل ajax-loading-message.php، برنامه نویسی سمت سرور


برای نوشتن کدهای سمت سرور ابتدا فایلی با نام فرضی ajax-loading-message.php در برنامه های ویرایشگر PHP ایجاد و نمونه دستورات زیر را در آن درج می کنیم.
<?php
$code = rand(10000, 99999);
echo $code;
?>
این فایل مسئول دریافت درخواست ای جکس از سمت کاربر و ایجاد خروجی نهایی است که از سرور به مرورگر ارسال می شود، دقت کنیم نتیجه این فایل هر چیزی که باشد به همان صورت به مرورگر ارسال و در تگ HTML هدف چاپ خواهد شد لذا نیازی نیست از موارد اضافه مانند کدهای HTML در کدنویسی فایل PHP استفاده کنیم، به عبارتی کافی است صرفا بخش مورد نیاز را بدون کدهای HTML به عنوان خروجی چاپ کنیم.
شیوه اشتباه:
<html>
.
.
<body>
<?php
$code = rand(10000, 99999);
echo $code;
?>
</body>
</html>
که این شیوه اشتباه است و کدهای HTML اضافه در پاسخ درخواست ای جکس به مرورگر ارسال خواهند شد.

فایل ajax-loading-message.html، کدهای HTML سمت کاربر و توابع ای جکس


برای نوشتن بخش های سمت کاربر نیز ابتدا فایلی با نام فرضی ajax-loading-message.html در برنامه های ویرایشگر HTML ایجاد و نمونه کدهای زیر را در آن درج می کنیم.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>وبگو | نمایش پیام در حال پردازش و بارگذاری با ای جکس </title>
<!-- Webgoo.ir -->
<style type="text/css">
body{
    font-family:Tahoma, Geneva, sans-serif;
    direction:rtl;
    font-size:12px;
}
.rtl{
    direction:rtl;
}
.code{
    height:25px;
}
</style>
<script type="text/javascript">
var xmlHttp;
var message = '<img src="loading.gif" alt="loading" height="16" width="16"> کمی صبر کنید...';
var url = 'ajax-loading-message.php';

function ajaxRequest(){    
    try{
        //Firefox, Opera, Safari
        xmlHttp = new XMLHttpRequest();
    } catch (e){
        //Internet Explorer
        try{
            xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try{
                xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e){
                alert("متاسفانه مرورگر شما از ای جکس پشتیبانی نمی کند");
                return false;
            }
        }
    }
}

function changeCode(id){
    ajaxRequest();
    
    xmlHttp.onreadystatechangefunction(){
        if(xmlHttp.readyState > 0 && xmlHttp.readyState < 4){
            document.getElementById(id).innerHTML = message;
        } else if(xmlHttp.readyState == 4) {
                document.getElementById(id).innerHTML = xmlHttp.responseText;
        }
    }
    
    xmlHttp.open("POST", url, true);
    xmlHttp.send();
}
</script>
</head>
<body>
<div class="rtl">
<a href="#" onclick="changeCode('code');">تعویض کد</a>
<br>
<br>
<div class="code" id="code">کد جدید اینجا نشان داده خواهد شد!</div>
<hr>
در فناوری ای جکس فعل و انفعالات در پس زمینه و دور از دید کاربر صورت می گیرند، لذا نمایش وضعیت های انجام فرآیند به صورت پیام یا تصویر می تواند تجربه بهتری به لحاظ رابط کاربری (User Interface) فراهم کند.
</div>
</body>
</html>
پیش نمایش
- در مثال بالا ابتدا با رویداد onclick تابع changeCode را فراخوانی کرده ایم که این تابع نیز در درون خود تابع ajaxRequest را فراخوانی می کند، ajaxRequest وظیفه ساخت آبجکت جهت انجام فرآیندهای درخواست ای جکس را بر عهده دارد که در نمونه کد بالا این آبجکت به متغیر xmlHttp نسبت داده شده است.
- آرگیومنت تابع changeCode مقادیر id بلاکی است که می خواهیم نتیجه درخواست ای جکس در آن نمایش داده شود (در این مثال بلاک div با آی دی code)، تابع onreadystatechange با هر تغییر مقادیر عددی برگردانده شده توسط متد readyState یک بار اجرا می شود، به طور مثال اگر مقادیر readyState از 1 به 2 تغییر کند، تابع تعریف شده در onreadystatechange مجددا اجرا خواهد شد، به این ترتیب می توان وضعیت readyState را بررسی کنیم اگر عدد از 0 بزرگتر و از 4 کوچکتر باشد یعنی درخواست در حال پردازش بوده و اطلاعات هنوز بارگذاری نشده است، اگر عدد برابر 4 باشد یعنی درخواست به صورت کامل پردازش و نتیجه از سرور دریافت شده است.
- متغیرهای message و url باید متناسب با آدرس و محل قرارگیری فایل ها مقدار دهی شوند، در این نمونه کد فرض بر این است که فایل HTML، PHP و تصویر متحرک در یک دایرکتوری قرار دارند.
- در کد PHP از تابع rand برای ایجاد اعداد اتفاقی استفاده کرده ایم که صرفا جنبه تست دارد.
- این نمونه کد صرفا درخواست را به سرور ارسال می کند، برای موارد پیچیده تر مانند ارسال مقادیر از فرم HTML (تگ form) با ای جکس نیاز به توابع دیگری است که در این رابطه در بخش آموزش های کاربردی Ajax به صورت جداگانه صحبت کرده ایم.
sectionدسته بندی: آموزش مقدماتی » Ajax
related مطالب بیشتر:
» فریم ورک های ای جکس (Ajax Frameworks)
» ذخیره و نمایش اطلاعات فایل با ای جکس (Ajax) و PHP
» ارسال و دریافت اطلاعات با متد GET و POST در ای جکس (Ajax)
» آموزش ای جکس (Ajax)، تکنیک غیرهمزمانی در وب
» نمایش افکت fade in با ای جکس (Ajax)
commentنظرات (۹ یادداشت برای این مطلب ارسال شده است)
more یادداشت های جدید بر اساس تاریخ ارسال در انتهای یادداشت های موجود نمایش داده می شوند.
نویسنده: Ali Zeus
۰۲:۰۴ ۱۳۹۳/۰۶/۱۴
با سلام و خسته نباشید
برای لودینگ کل صفحه (java , php , html) این کد با کمی تغییر کاربرد نداره؟ چطور میشه برای صفحه ورودی لودینگ ساخت؟ (یعنی تا زمانی که صفحه کامل لود نشده و فاوایکون در حال انتظار یا لودینگ است یک پیام لودینگ نمایش داد)
پاسخ: 
خیر، این کد برای این مورد مناسب نیست!
هدف مد نظر شما به کمک کدهای جاوا اسکریپت ممکن است که باید در وب جستجو کنید.
نویسنده: هادی
۲۲:۵۱ ۱۳۹۴/۱۰/۱۸
با سلام و خسته نباشید و تشکر از سایت خوبتون و پاسخگویی عالیتون
من یه سایتی دارم واسه مشتری با ایجکس طراحی میکنم که نیازه کاربر کلیپی رو آپلود کنه. مشکل اینجاست که گاهی حجم کلیپ ها بیشتر از 100 مگابایت میشه و بارگذاری اون توسط کاربر سخته. همچنین ممکنه اتفاقی در حین آپلود بیفته و کاربر مجبور باشه دوباره فرآیند آپلود رو از سر بگیره. میخواستم ببینم شما راه حلی واسه این مشکل سراغ دارید یا خیر.
پاسخ: 
در این مواقع معمولا با ایجاد سیستم قابلیت ادامه دانلود می توان بیشترین کمک را به کاربران کرد، این سیستم مبتنی بر تقسیم یک فایل به قطعات مختلف یا Chunk است که ظاهرا در وب چند نمونه کد و کلاس برای آن نوشته شده:
https://github.com/moxiecode/plupload/blob/master/examples/upload.php

https://hacks.mozilla.org/2011/04/resumeupload/

http://stackoverflow.com/questions/9011138/handling-pluploads-chunked-uploads-on-the-server-side
نکته 1: کدها کامل بررسی و مطالب دقیقا مطالعه نشده اند، بهتر است ابتدا دقیقا در این خصوص مطالب را مطالعه، کدها را تست و سپس استفاده کنید!
نکته 2: در صورتی که نمی خواهید قابلیت فوق را پیاده سازی کنید، حداقل باید سرورتان را برای آپلود فایل های حجیم تنظیم کنید که این کار از طریق تغییر تنظیمات پیش فرض فایل php.ini ممکن است:
http://www.sitepoint.com/upload-large-files-in-php
نویسنده: مهدی
۰۱:۰۴ ۱۳۹۵/۰۸/۰۶
الان در این مثال هیچ فرقی بین استفاده از post یا get نیست ، درسته؟ یعنی میشه توی همین کدی که نوشتید بجای post از get استفاده کنیم ، بدون این که قسمت دیگری رو تغییر بدیم؟
پاسخ: 
بله همین طور است، در Ajax مانند حالت معمول وب، متد GET پارامترها را از طریق آدرس URL می فرستد اما متد POST پارامترها را به صورت مخفی و در حالت یک فرم وب (مانند حالتی که یک فرم وب را ارسال می کنید) ارسال می کند، در اینجا چون هیچ پارامتری ارسال نمی شود، لذا دو متد به جای هم قابل استفاده هستند.
نویسنده: مهدی
۰۰:۴۵ ۱۳۹۵/۰۸/۰۷
کدتون فکر کنم یک ایرادی داره . در کد داخل عنصری که آی دی div داره کد رو میریزید اما آی دی تگ div کد هست.
یعنی شما جواب در خواست رو در
document.getElementById(div).innerHTML=xmlHttp.responseText;
ریختید اما ما عنصری با آی دی div نداریم بلکه این هست:
<div class="code" id="code">کد جدید اینجا نشان داده خواهد شد!</div>
و یه سوال اینکه از این متغیر کجا استفاده شده در کد بالا؟
var div = 'code';
پاسخ: 
به نوعی جواب در سوالتان وجود دارد! عبارت div استفاده شده در متد document.getElementById در واقع همان متغیری است که در ابتدای کد (با عبارت var) تعریف شده و مقدار آن برابر id تگ یعنی code قرار گرفته است، باید توجه کنیم که جاوا اسکریپت یک زبان اسکریپتی داینامیک سمت کاربر است، یعنی متغیر div با مقدار خود در کد جایگزین می شود!
نویسنده: علی
۱۹:۴۰ ۱۳۹۵/۰۸/۱۴
خب چه نیازی به جایگزینی id=code با متغیر div بود؟
پاسخ: 
این کار برای این منظور است که بتوانید (در صورت نیاز) تابع خود را با آرگیومنت های مختلف فراخوانی کنید، یا برای تغییرات بعدی و خواناتر بودن کدها معمولا از متغیرها در درون کد استفاده می کنند (یک بار متغیر را تعریف و مقدار دهی کرده و به هر تعداد در درون دستورات استفاده می کنند)، زمانی این موضوع بیشتر نمود پیدا می کند که بخواهید برنامه های حرفه ای با کدنویسی زیاد بنویسید!
نویسنده: kazem
۲۳:۲۸ ۱۳۹۷/۱۲/۱۳
سلام
اگر بخواهیم از یک فرم اطلاعات رو به سرور بفرستیم و چطور باید انجامش بدیم ؟
پاسخ: 
در قسمت آموزش های کاربردی Ajax (منوی سایت) آموزش جداگانه در این خصوص وجود دارد!
نویسنده: علی
۰۸:۴۲ ۱۳۹۹/۰۳/۰۱
با سلام و عرض ادب
من یه فانکشن تعریف کردم و کدهای فایل ajax-loading-message.php رو درونش گذاشتم
function rand() {
$code = rand(10000, 99999);
echo $code;
}
حالااگر بخوام از فایل ajax-loading-message.php فانکشن رو صدا بزنم خطای زیر رو میده.
چطور میشه این خطا رو برطرف کرد؟
Call to undefined function rand()
پاسخ: 
کدها را در فایل PHP به صورت زیر استفاده کنید، نباید مشکل خاصی باشد:
<?php
function myRand() {
$code = rand(10000, 99999);
echo $code;
}
myRand();
?>
نویسنده: علی
۰۶:۱۶ ۱۳۹۹/۰۳/۰۳
با سلام...
من یه متغیر تعریف کردم مثلا
$mylink = '/123'; 
چطور میشه این رو در فایل ajax-loading-message.html تعریف کنم که بعد ارسال بشه به فایل ajax-loading-message.php و بعد هر دو در کنار هم برگردند و به صورت مثلا:
59496/123
نمایش داده بشه.
یا اینکه اصلا متغیری به فایل ajax-loading-message.php ارسال نشه وقتی عدد برگشت داده میشه ما بتونیم
/123
رو بهش متصل کنیم
ممنون از پاسختون.
پاسخ: 
در حالت اول باید از متد GET یا POST در ای جکس استفاده کنیم، در این خصوص در آموزش های مقدماتی مبحث جداگانه مطرح شده، به طور مثال:
var url = 'ajax-loading-message.php?param=/123';
در سمت سرور هم با روش زیر پارامتر را دریافت می کنیم:
$param = $_GET['param'];
در حالت دوم می توانیم پاسخ دریافتی را در متد responseText دریافت و به مقدار مد نظر متصل کنیم، به فرض:
document.getElementById(id).innerHTML = xmlHttp.responseText + '/123';
البته اینها صرفا جهت مثال هستند، اگر کمی با جاوا اسکریپت و PHP آشنا باشید برای مدیریت پارامترها چه در ارسال و چه در دریافت محدودیتی وجود ندارد.
نویسنده: علی
۰۹:۵۰ ۱۳۹۹/۰۳/۰۳
چطور میشه همزمان با کلیک بر روی «تعویض کد» یعنی کد زیر:
<a href="#" onclick="changeCode('code');">تعویض کد</a>
ابتدا یه پوشه در درایو D به نام مثلا 30 درست کنه و بعد
$code;
رو برگردونه؟
چه کدی رو کجای کدهای ajax-loading-message.html قرار بدم.
میخوام قبل از
xmlHttp.open("POST", url, true);
پوشه ساخته بشه.
با سپاس
پاسخ: 
برای ساخت پوشه نمی توانید از جاوا اسکریپت استفاده کنید (به دلیل سیاست های امنیت وب)، اما می توانید قبل از چاپ خروجی در فایل ajax-loading-message.php نمونه کد زیر را داشته باشید:
<?php
$dir = '/folder/dir/';
if(!mkdir($dir, 0777, true)){
die('Failed to Create Folders...');
}
$code = rand(10000, 99999);
echo $code;
?>

https://www.php.net/manual/en/function.mkdir.php
نکته: در سوال درایو D عنوان شده، توجه کنید که در وب نمی توانید بر روی هارددیسک کاربر فولدری ایجاد کنید، اگر با برنامه سرور مجازی مانند WampServer در سیستم خانگی کار می کنید می توانید در فولدر www پوشه ها را بسازید.
more لطفا پیش از ارسال یادداشت نکات زیر را مد نظر داشته باشید:
- موارد غیرمرتبط با مباحث آموزش ها را در فرم منوی "تماس با ما" مطرح و پاسخ را از طریق ایمیل دریافت کنید.
- به سوالات کلی، مبهم و مشکلاتی که تلاشی برای رفع آن نکرده باشید پاسخ مختصر داده خواهد شد.
- کدها و اسکریپت های طولانی را ترجیحا در یک صفحه وب آنلاین قرار دهید تا امکان تست و بررسی وجود داشته باشد.
- از درج عناوین تبلیغاتی در فیلدها خودداری کنید، در صورتی که یادداشت تبلیغاتی تشخیص داده شود حذف خواهد شد.
- تمام یادداشت ها بررسی و زمانی جهت پاسخگویی در نظر گرفته می شود، لطفا از طرح سوالات متعدد خودداری کنید.





3 × 9
 refresh

آخرین دیدگاه ها
more برای دسترسی سریع به یادداشت مربوطه می توانید از لینک مطلب در کادر زیر استفاده کنید.
form کوثر رحیمی
در:
سلام ا ز راهنماییتون ممنونم من تازه وبلاگم رو درست کردم ۱۲ سالمه هر کاری می کنم فیلم در اون قرار نمیگیره همش این خطا...
۱۳۹۹/۱۰/۲۹

form متین
در:
سلام و خسته نباشید من بخوام داده ای که از قبل موجوده رو با متد پست به یک فایل ارسال کنم چجور میشه؟ یعنی...
۱۳۹۹/۱۰/۲۷

form روشنا
در:
سلام ما یه وبلاگ گروهی داریم مختص املاک فایل های جدید و حتی قالب جدید اصلا اعمال نمیشه . حتی راهنمایی که کرده...
۱۳۹۹/۱۰/۲۷

form علی
در:
من در یک سایت سازی سایت ساختم یه بخش داره به نام اسکریپت دلخواه می خوام یه اسکریپتی بذارم که مثلا یه موسیقی وقتی کاربر...
۱۳۹۹/۱۰/۲۷

form امیرحسین
در:
بله استاد خیلی ممنون، نمیدونستم خودش Optimize رو انجام میده در کل من بعد از ایندکس گذاری ها همیشه سعی کردم جوری که با...
۱۳۹۹/۱۰/۲۶

form امیرحسین
در:
ُسلام وقت بخیر این کووری هم چون اول قسمت WHERE انجام میشه بعد قسمت ON پس این کووری هم با حالت کووری قبلی برابره
۱۳۹۹/۱۰/۲۶

form امیرحسین
در:
سلام استاد وقت بخیر ممنون از پاسخ گویی های قبلی یه سوال دیگه داشتم: این هم هیچ مشکلی نداره و کار میکنه، ایا...
۱۳۹۹/۱۰/۲۵

form محمد بیدل بازه
در:
سلام خسته نباشید ببخشید من توی یک قسمت سایتم تصویری دارم و میخوام سمت راست اون تصویر متن بنویسم ولی نمیشه تا متن رو...
۱۳۹۹/۱۰/۲۵

form سلام
در:
و اینکه یه تگ خوب برای فونت معرفی کنید و یه تگ دیگه که متن رو (تیتر مطلب (تست)) در ادامش بنویسه نه اینکه...
۱۳۹۹/۱۰/۲۴

form سلام
در:
سلام وبسایتم را نگاه کنید از چه تگی استفاده کنم تا فاصله بین تیتر مطلب جدید را کاهش دهم؟ (از خطی به خط...
۱۳۹۹/۱۰/۲۴

form وطن
در:
سلام. خسته نباشید. خیلی گشتم درباره یک خطا یا ایراد فنی که چند روز هست در سایت نوشته شده با پی اچ پی (اسکریپت اولوشن)...
۱۳۹۹/۱۰/۲۴

form حورارمی
در:
سلام. من هنوز نمیدونم تو تنظیمات باید کجا رو بگردم تا قالب وبلاگم رو با عکس مورد علاقه ام تغییر بدم. یا نمیتونم...
۱۳۹۹/۱۰/۲۳

form راشد
در:
این روش خیلی طولانیه در فروشگاه من یک برنامه گرفتم که یه عکس توش اپلود کن بهت یک لینک میده در ظرف چند ثانیه و...
۱۳۹۹/۱۰/۲۱

form باسلام
در:
باسلام خدمت شما عزیز زحمت کش، من مطلب را تا آخر مطالعه کردم. من وبلاگم بازدیدای زیادی داره چون تمام مطالبش رو خودم مینویسم و...
۱۳۹۹/۱۰/۲۱

form محمود
در:
سلام و عرض ادب من در سایتم یک قسمت تب ایجاد کردم، متن ها را که در تب می نویسم پاراگراف بندی نمی شوند....
۱۳۹۹/۱۰/۲۱
form علی آقابیگی
در:
سلام خسته نباشید ببخشید من می خواستم کد جدید در وبلاگم بزارم بعد اشتباهی رفتم در قسمت ویرایش کدها و بعد بیشتر کدها را پاک...
۱۳۹۹/۱۰/۲۰
form محمد
در:
سلام. من میخوام با جاوا اسکریپت یک کدی بنویسم که وقتی کاربر روی یک دکمه ‏ای کلیک کرد، یک کد تصادفی برای شمارش ارسال...
۱۳۹۹/۱۰/۲۰
form پوریا
در:
سلام خسته نباشید، ممنونم بابت توضیحات خوبتون، یه مشکلی داشتم میخواستم ببینم امکانش هست راهنمایی کنید؟ فرض کنید یه اینطور متنی داریم: ...
۱۳۹۹/۱۰/۱۹
form seyedsobhanmansouri
در:
سلام خسته نباشید من سایتمو طراحی کردم اما به این مشکلات بر میخورم اول اینکه هدر سایتم نمایش داده نمیشه اصلا و بعد...
۱۳۹۹/۱۰/۱۹
form رضا
در:
سلام. ممنون بابت مطالب مفیدتون. این نوع جستجو به سئو سایت لطمه نمیزنه؟؟؟ چون در این مدل جستجو، مقدار impression میره بالا ولی...
۱۳۹۹/۱۰/۱۹
form mahdi
در:
سلام استاد عزیز ، پس بنظرتون بجای وقت گذاشتن برای یادگیری لاراول و وردپرس ، وقت بزارم که عمیق تر php و ساختار mvc...
۱۳۹۹/۱۰/۱۹
form علی
در:
سلام و ممنون بابت وبسایت عالیتون داخل بعضی سایت ها دیدید مثلا یه متنی شروع به تایپ شدن می کنه و وقتی کامل شد...
۱۳۹۹/۱۰/۱۸
form محمد
در:
سلام خدمت شما دوست عزیز سوالم این بود میخاستم چندتا مثال از این تابع و چند تابع دیگه از خودتون رو برام مثال بزنید...
۱۳۹۹/۱۰/۱۸
form محمود رنجبر
در:
سلام برادر مشکل من تو همین سایتی هست که فرستادم وقتی گزینه خانه رو کلیک میکنم و بعد دکمه بک گوشی رو میزنم بالای صفحه...
۱۳۹۹/۱۰/۱۷
form mahdi
در:
سلام استاد عزیز ، بعد از آموزس php با لاراول کار کنیم بهتره ؟
۱۳۹۹/۱۰/۱۶
form رضا
در:
آدرس رو براتون گذاشتم دامنه قبلا روی یه وبلاگ میهن بلاگ بود چند ماه میشه که از میهن بلاگ خداحافظی کردم ولی هنوز که هنوزه...
۱۳۹۹/۱۰/۱۴
form نیلو
در:
سلام... ببخشید بعد طراحی قالب قالب شیشه ایم هست یا نه؟؟؟
۱۳۹۹/۱۰/۱۳
form مجتهدزاده
در:
سلام من یه فرمی طراحی کردم که توش قراره تعداد زیاد (حدود 10 الی 50) فیلد رو تو دیتابیس اینسرت کنم. آیا باید...
۱۳۹۹/۱۰/۰۸
form مجتهدزاده
در:
سلام لطفا راهنمایی بفرمایید که چه زمانی قبل از متغیر @ استفاده می شه و کاربردش چیه؟ با تشکر
۱۳۹۹/۱۰/۰۶
form ali
در:
سلام چجوری میشه با php بازی هوب رو طراحی کرد
۱۳۹۹/۱۰/۰۶
form رضا
در:
سلام ممنون از سایت خوبتون ایکون سایتم رو توی دسکتاپ درست نشون میده ولی تو گوشی مشکل داره طبق اموزش شما هم انجام دادم...
۱۳۹۹/۱۰/۰۶
form فرانک دستان
در:
سلام من خیلی دوست دارم روی وبلاگم کد اهنگ بزارم ولی هیچ کدوم نمی یاد بهم گفتن از این کدها دیگه پشتیبانی نمی شه شما...
۱۳۹۹/۱۰/۰۵
form مصطفی
در:
سلام. عملگر @ چه زمانی قبل از یک متغییر میاد؟
۱۳۹۹/۱۰/۰۵
form سما
در:
سلام من وقتی میزنم روی مشاهده وبلاگ صفحه فیلتر برام میاد و نمیتونم وبلاگمو ببینم
۱۳۹۹/۱۰/۰۵
form مجتبی
در:
سلام من وبلاگ بلاگفا دارم کدها و جاوا استیکرها رو میزارم تو قسمتشون ولی همه ی کدها رو یکطرف وبلاگ نشون میده چطوری سمت...
۱۳۹۹/۱۰/۰۵
form matin asadi
در:
سلام ممنون بابت سایت خوبتو من یه مشکلی دارم می خواستم کدی برای این مثال زیر بنویسم ولی بلد نیستم ممنون میشم کمک کنید. ...
۱۳۹۹/۱۰/۰۲
form sahar1999
در:
سلام وقت بخیر چطور میتونم در برنامه نویسی سی شارپ هنگام ایجاد پایگاه داده ی MySql نام پایگاه داده رو از txetbox دریافت کنم؟
۱۳۹۹/۱۰/۰۱
  در انتظار بررسی: ۰
 پاسخگویی به سوالات ممکن است تا 24 ساعت زمان ببرد.