i
در حال برنامه نویسی و آماده سازی نسخه جدید «وبگو» هستیم، در این نسخه قابلیت ها و ظاهر سایت به کلی متفاوت و کاملتر خواهد بود، این فرآیند زمانبر و از مدتی پیش شروع شده و همچنان ادامه دارد، روند پیشرفت پروژه در این قسمت به صورت درصدی مشخص است و به تناوب به روزرسانی می شود.
نکته:
با توجه به تاریخ نگارش آموزش های سایت و پیشرفت تکنولوژی های مرتبط با وب در سالیان اخیر، محتوای برخی از مطالب قدیمی ممکن است نیاز به ویرایش و به روزرسانی داشته باشند که این کار هم زمان با تهیه نسخه جدید «وبگو» به مرور در حال انجام است، لطفا در استفاده از مطالب سایت به این نکته دقت داشته و حتی المقدور از چند منبع مختلف استفاده نمائید.
article

ارسال و دریافت اطلاعات با متد GET و POST در ای جکس (Ajax)

ajax-asynchronous

به طور کلی ارسال و دریافت اطلاعات در بستر وب با دو متد GET و POST صورت می گیرد که جزئی از استانداردهای تعریف شده پروتکل HTTP هستند و توسط مرورگرها و سرورهای مختلف پشتیبانی می شوند، متد GET معمولا برای ارسال پارامترهای قابل روئیت در آدرس URL درخواستی و دریافت پاسخ از سرور کاربرد دارد، از متد POST نیز به طور معمول در کدنویسی HTML در هنگام کار با فرم ها (تگ form) و ارسال اطلاعات به صورت غیرقابل روئیت استفاده می شود، در ای جکس GET و POST کارکردی مشابه دارند با این تفاوت که در هر دو متد درخواست در پس زمینه ارسال شده و خللی در پیمایش صفحه کاربر ایجاد نمی شود، درک این دو شیوه با توجه به استفاده در بدنه اصلی یک درخواست مبتنی بر ای جکس (Ajax) جهت طی ادامه روند آموزش های این بخش اهمیت زیادی دارد.

متد GET و POST در ای جکس (Ajax)


همانطور که پیش از این گفتیم درخواست های مبتنی بر ای جکس (Ajax) از چند قسمت اصلی تشکیل شده اند (آبجکت XMLHttpRequest، متد open، متد send، متد onreadystatechange و readyState)، آبجکت XMLHttpRequest ساز و کار مورد نیاز را برای ارسال و دریافت اطلاعات بر بستر Ajax فراهم می کند، متد open یک فایل را در سرور با یکی از متدهای GET یا POST فراخوانی کرده و پارامترهای مورد نیاز در قسمت send ارسال می شوند، متد onreadystatechange نیز در کنار متد readyState وضعیت های مختلف را در طی این فرآیند بررسی می کند، با ذکر این ساختار کلی این قسمت از آموزش را به متد open و send اختصاص می دهیم که خود از متدهای GET و POST در پروتکل HTTP استفاده می کنند، به طور خلاصه:
- open و send توابعی در Ajax هستند که برای فراخوانی یک فایل از سرور و ارسال پارامتر به آن از آنها استفاده می کنیم (این توابع را در اصطلاح برنامه نویسی شی گراء، متد می گویند).
- متد open برای فراخوانی فایل از سرور از یکی از شیوه های تعریف شده در پروتکل HTTP استفاده می کند، در پروتکل HTTP دو متد GET و POST برای ارسال و دریافت اطلاعات بین کاربر (Client) و سرور (Server) تعریف شده که جزء استانداردهای این پروتکل هستند.

پارامترهای متد open و send در ای جکس (Ajax)


هر درخواست مبتنی بر ای جکس (Ajax) در نهایت باید یک فایل را از سرور فراخوانی کند، این فراخوانی می تواند با ارسال مقادیر یا بدون ارسال مقادیر باشد، ای جکس برای این نیاز از دو متد open و send استفاده می کند که درخواست ها با این دو متد از طریق استاندارد HTTP و متدهای GET و POST در این استاندارد ارسال و نتیجه دریافت می شود، در نمونه کدهای زیر بخش مربوط به متد open و send از یک درخواست مبتنی بر ای جکس را بررسی می کنیم:
xmlHttp.open("GET", "index.php?action=add&id=22", true);
xmlHttp.send(null);

var params = "action=add&id=22";
xmlHttp.open("POST", "index.php", true);
xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlHttp.send(params);
همان طور که در نمونه کدهای بالا مشخص است، زمانی که متد GET در قسمت open استفاده می شود، پارامترها از طریق آدرس URL به سرور ارسال می شوند و قسمت send مقدار null یا خالی دارد، اما در حالت استفاده از POST باید تنظیماتی اعمال شود که از جمله استفاده از متد setRequestHeader است، این متد در ای جکس برای تنظیم سربرگ (Header) های HTTP در یک درخواست استفاده می شود، در مثال بالا نیز سربرگ Content-type با مقادیر application/x-www-form-urlencoded تنظیم شده است، این دستور به مرورگر تفهیم می کند که اطلاعات را مانند یک فرم ساده HTML ارسال کند، پارامترها در حالت استفاده از متد POST، هم می توانند از طریق آدرس URL (مشابه متد GET) و هم در بخش send ارسال شوند که هر کدام برای شرایط خاصی مناسب هستند که در ادامه در این رابطه بیشتر خواهیم گفت، پارامتر سوم متد open نیز برای تعیین غیر همزمانی (هم روند یا Asynchronous) بودن یا نبودن درخواست است، در صورتی که این مقدار true باشد در پیمایش صفحه کاربر خللی ایجاد نمی شود اما اگر این مقدار را false تنظیم کنیم، تا زمانی که فرآیند درخواست ای جکس به پایان نرسیده، کاربر نمی تواند در صفحه پیمایش کند.

GET یا POST، کدام متد را استفاده کنیم؟!


GET و POST هر کدام با هدف خاصی در HTTP تعریف شده اند، متد GET برای ارسال پارامترها در آدرس URL به کار می رود و از POST برای ارسال بسته های اطلاعات به صورت غیر قابل روئیت استفاده می شود.
کجا از GET استفاده کنیم؟
- متد GET معمولا برای ارسال پارامترهای دستوری در آدرس URL استفاده می شود، به طور مثال می توانیم شماره ID کاربر یا کلمه جستجو شده را در این متد ارسال کنیم.
- در صورتی که اطلاعات ارسال شده حالت عمومی داشته باشند استفاده از GET مانعی ندارد، به طور مثال ارسال اطلاعات حساس مانند رمز عبور از این طریق توصیه نمی شود چرا که در آدرس URL و به صورت آشکار قابل روئیت خواهد بود.
- در مواردی که نیاز به ذخیره سازی موقت (Cache) اطلاعات باشد GET گزینه مناسبی است (البته این حالت را می توان با برنامه نویسی جاوا اسکریپت به نحو دلخواه تغییر داد).
- متد GET در ای جکس سریعتر از متد POST است و برای موارد عمومی که صرفا نیاز به فراخوانی یک فایل از سرور با Ajax است، گزینه مناسبی است، متد POST در ای جکس به صورت دو مرحله ای عمل می کند (ابتدا سربرگ های HTTP و سپس اطلاعات ارسال می شوند).
جهت آشنایی بیشتر در مثال زیر اطلاعات فرضی را توسط متد GET برای یک فایل PHP با نام ajax-get.php ارسال و پاسخ را در بلاکی با آی دی result خروجی می دهیم:

فایل ajax-get.php


<?php
@$site = $_GET['site'];
@$domain = $_GET['domain'];
echo "نام سایت: $site<br>";
echo "آدرس دامنه: $domain<br>";
echo "متد استفاده شده: GET<br>";
?>

کد HTML درخواست و تنظیمات Ajax


<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>وبگو | ارسال و دریافت اطلاعات با متد GET</title>
<!-- Webgoo.ir -->
<style type="text/css">
body {
    font-family: Tahoma, Geneva, sans-serif;
    direction: rtl;
    font-size: 12px;
}
</style>
<script type="text/javascript">
function ajaxCallFile(id) {
    var xmlHttp;
    
    try {
        //Opera, Firefox, 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;
            }
        }
    }
    xmlHttp.onreadystatechange = function () {
        if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
            document.getElementById(id).innerHTML = xmlHttp.responseText;
            document.getElementById('button-1').innerHTML = 'ارسال درخواست ای جکس';
            document.getElementById('button-1').disabled = false;
        } else {
            document.getElementById('button-1').innerHTML = 'لطفا چند لحظه صبر کنید...';
            document.getElementById('button-1').disabled = true;
        }
    }
    
    xmlHttp.open("GET", "ajax-get.php?site=Webgoo&domain=https://webgoo.ir", true);
    xmlHttp.send(null);
}
</script>
</head>
<body>
<noscript>
جاوا اسکریپت در مرورگر شما غیر فعال است!<br>
</noscript>
<button id="button-1" type="button" onclick="ajaxCallFile('result')">ارسال درخواست ای جکس</button>
<div id="result"></div>
<hr>
پس از کلیک بر روی دکمه بالا، تابع جاوا اسکریپتی فراخوانی شده و درخواست ای جکس به فایل PHP در سرور ارسال می شود، سپس نتیجه دریافت و در بلاک نمایش داده خواهد شد، در این مثال از متد GET استفاده شده است.
</body>
</html>
پیش نمایش
متد POST در ای جکس شباهت زیادی به GET دارد، با این تفاوت که در این شیوه درخواست، مانند تگ form در HTML سربرگ های HTTP یا HTTP Headers نیز به مرورگر ارسال می شوند، از طرفی xmlHttp.send به جای مقادیر null، پارامترهایی با مقادیر رشته ای دارد.
کجا از POST استفاده کنیم؟
- در ای جکس هرکجا نیاز به ارسال اطلاعات حساس مانند نام کاربری، کلمه عبور، مشخصات حساب بانکی و... باشد، بهتر است از POST استفاده کنیم، چرا که اطلاعات در این شیوه در آدرس URL قابل روئیت نیست.
- برای ارسال اطلاعات حجیم (به طور مثال اطلاعات یک فرم HTML) از POST استفاده می شود، متد GET از نظر میزان اطلاعات مجاز با محدودیت های بیشتری در مقایسه با POST روبرو است.
جهت آشنایی بیشتر در مثال زیر اطلاعات فرضی را توسط متد POST برای یک فایل PHP با نام ajax-post.php ارسال و پاسخ را در بلاکی با آی دی result خروجی می دهیم:

فایل ajax-post.php


<?php
@$site = $_POST['site'];
@$domain = $_POST['domain'];
echo "نام سایت: $site<br>";
echo "آدرس دامنه: $domain<br>";
echo "متد استفاده شده: POST<br>";
?>

کد HTML درخواست و تنظیمات Ajax


<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>وبگو | ارسال و دریافت اطلاعات با متد POST</title>
<!-- Webgoo.ir -->
<style type="text/css">
body {
    font-family: Tahoma, Geneva, sans-serif;
    direction: rtl;
    font-size: 12px;
}
</style>
<script type="text/javascript">
function ajaxCallFile(id) {
    var xmlHttp;
    
    try {
        //Opera, Firefox, 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;
            }
        }
    }
    xmlHttp.onreadystatechange = function () {
        if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
            document.getElementById(id).innerHTML = xmlHttp.responseText;
            document.getElementById('button-1').innerHTML = 'ارسال درخواست ای جکس';
            document.getElementById('button-1').disabled = false;
        } else {
            document.getElementById('button-1').innerHTML = 'لطفا چند لحظه صبر کنید...';
            document.getElementById('button-1').disabled = true;
        }
    }
    
    xmlHttp.open("POST", "ajax-post.php", true);
    xmlHttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
    xmlHttp.send('site=Webgoo&domain=https://webgoo.ir');
}
</script>
</head>
<body>
<noscript>
جاوا اسکریپت در مرورگر شما غیر فعال است!<br>
</noscript>
<button id="button-1" type="button" onclick="ajaxCallFile('result')">ارسال درخواست ای جکس</button>
<div id="result"></div>
<hr>
پس از کلیک بر روی دکمه بالا، تابع جاوا اسکریپتی فراخوانی شده و درخواست ای جکس به فایل PHP در سرور ارسال می شود، سپس نتیجه دریافت و در بلاک نمایش داده خواهد شد، در متد POST از متد setRequestHeader استفاده و پارامترها در قسمت send تنظیم و ارسال می شوند، در این مثال از متد POST استفاده شده است.
</body>
</html>
پیش نمایش
ارسال پارامترها در ای جکس صرفا به روش ثابت مانند نمونه کدهای بالا محدود نمی شود، در آموزش های بعدی خواهیم دید که چگونه می توان به نحو حرفه ای تر و با قابلیت تعاملی بیشتر به صورت پویا از قابلیت های ای جکس در طراحی امکانات و رابط کاربری برنامه های تحت وب استفاده کرد.
sectionدسته بندی: آموزش مقدماتی » Ajax
related مطالب بیشتر:
» نمایش افکت fade in با آژاکس (ajax)
» فریم ورک های آژاکس (Ajax Frameworks)
» نمایش پیام و تصویر در حال بارگذاری (loading) در آژاکس (ajax)
» آموزش ای جکس (Ajax)، تکنیک غیرهمزمانی در وب
» نمایش و ذخیره اطلاعات فایل با آژاکس (Ajax)
commentنظرات (۴۳ یادداشت برای این مطلب ارسال شده است)
نویسنده: مصطفی
زمان: ۱۴:۴۶:۲۱ - تاریخ: ۱۳۹۲/۰۸/۱۰
ببخشید میشه از طریق responseText یه مقدار عددی رو از سرور بگیریم؟
پاسخ: 
بله، این کار با Ajax به راحتی امکانپذیر است!
نویسنده: مصطفی
زمان: ۲۳:۱۵:۵۵ - تاریخ: ۱۳۹۲/۰۸/۱۱
ببخشید من دقیقا کدهای html مربوط به این مثال رو کپی می کنم و کدهای php رو هم همینطور ولی جواب نمیده که فکر می کنم قسمت url رو اشتباه وارد می کنم من از سرور مجازی استفاده می کنم و در قسمت url این ادرس رو میزنم
http://127.0.0.1:8888/ajax-get.php?site=webgoo&domain=webgoo.ir
اسم فایل php هم این هست
ajax-get.php
اشتباهش کجاست؟ و اینکه شما تو برنامتون در قسمت url این ادرس رو وارد کردید
get-post.php
در حالی که اسم فایل php تون این هست
ajax-get.php
ایا این کد درسته؟
پاسخ: 
اشکال کد شما در نحوه آدرس دهی به لوکال هاست است (پورت را تنظیم نکنید)، از آدرس دهی به روش نمونه زیر استفاده کنید:
http://localhost/ajax-get.php?site=webgoo&domain=webgoo.ir
در مورد نام فایل ها اشتباهی شده بود که اصلاح شد.
نویسنده: محمد محمدی
زمان: ۲۳:۲۵:۲۸ - تاریخ: ۱۳۹۲/۱۱/۱۴
سلام در بخشی از ajax
مجبور شدم از کد زیر استفاده کنم اما مشکلی که هست نتونستم تمام پارامترها را منتقل کنم و فقط یک پارامتر ارسال میشه میشه راهنمایی کنید تشکر
var i,j,x;
var anchor = document.getElementsByTagName("a");
for ( i = 0 , j = 1 ; i < anchor.length ; i ++ , j ++)
{
xmlhttp.open("POST","ajax.php",true);

var id = anchor[ i ].href;
var parameter ="id="+id;
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send(parameter);
}
پاسخ: 
یک پارامتر تنظیم کرده اید و قاعدتا هم فقط یک پارامتر باید ارسال شود، برای ارسال پارامترهای بیشتر از نمونه زیر استفاده کنید:
var parameter = "id=" + id + "&param_1=" + param_1 + "&param_2=" + param_2;
نویسنده: علی
زمان: ۱۹:۲۷:۳۸ - تاریخ: ۱۳۹۲/۱۱/۲۶
سلام در هنگام ارسال فرم به صورت زیر
for(i=0;i<100;i++){
var parameter ="id1="+i;
xmlhttp.open("POST","ajax.php",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send(parameter);
}
این مثال تنها به ارسال یک پارامتر اقدام می کند در حالیکه ما حتی از & استفاده کردیم و تنها در ان حالت می توانیم ارسال داشته باشیم و اخرش مجبوریم متغیرها را به صورت دستی وارد کنیم که کاری وقت گیر است ایا راهی هست که یک کد نوشت که همه پارامترها را از طریق ایجکس ارسال کنه هر کاری کردیم هم نشد و در هر حالتی هم استفاده کردیم یک پارامتر ارسال می شود

تشکر
پاسخ: 
مشکل شما ارتباطی به Ajax ندارد (کما اینکه در مثال و پیش نمایش دو پارامتر تنظیم شده)، بلکه می خواهید در یک حلقه به صورت داینامیک پارامترها را ایجاد کنید، البته مشخص نیست چرا به این نحو کدنویسی کرده اید که لازم باشد در 100 دور 100 پارامتر ایجاد شود!، به هر صورت راه حل ایجاد پارامترها به صورت زیر است:
<script type="application/javascript">
var parameter = '';
for(i = 0; i < 100; i++){
parameter += "id" +i+ "=" + i + "&";
}
alert(parameter);
xmlhttp.open("POST", "ajax.php", true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send(parameter);
</script>
نویسنده: ramin
زمان: ۲۳:۰۸:۲۸ - تاریخ: ۱۳۹۲/۱۲/۲۸
سلام.
بهترین روش برای قسمت ویراش خبرها منتشر شده استفاده از چه روشی است ؟ ... (برای مثال اینکه روی عنوان خبر کلیک کنند، بره توی یه صفحه جدید یا همون جا کادری باز بشه ؟ ... میشه راهنمایی کنید
پاسخ: 
روش خاصی وجود ندارد! این موارد سلیقه ای و بسته به نیاز سایت دارند، می توانید با الگوبرداری از چند سایت خبری مشابه یک حالت یا ترکیبی از آنها را در سایتتان داشته باشید، البته صرف انتخاب روش مهم نیست، بلکه نحوه پیاده سازی بهنیه آن اهمیت بیشتری دارد.
نویسنده: mavg
زمان: ۱۶:۰۸:۴۸ - تاریخ: ۱۳۹۳/۰۴/۱۲
یک فرم طراحی نموده ام و با متد post و روش AJAX اطلاعات فرم را به یک فایل sabt.php ارسال می کنم که کار این فایل جایگزینی اطلاعات دریافتی در بانک می باشد. در ابتدای فایل sabt.php ‌آرایه ای تعریف نموده ام که این اطلاعات دریافتی را در خود ذخیره می نمایند همه این عناصر آرایه کارشان را درست انجام می دهند لیکن در مورد ارایه ابتدایی هشدار ذیل داده می شود و ارایه اول مقدار خود را نمی گیرد و در نتیجه در بانک نیز مقداری ثبت نمی گردد
$aIndenti = Array($_POST['t_Sel_Blok'], $_POST['t_sel_floor'], $_POST['t_num_vahed'],
$_POST['t_name'], $_POST['t_family'], $_POST['t_tell'], $_POST['t_mobile'], $_POST['t_email']);
پیغام نمایش داده شده عبارت است ار
Notice: Undefined index: t_sel_blok in C:\xampp\htdocs\aja\sabt.php on line 7
پاسخ: 
دو قسمت را باید بررسی کنید:
- اینکه فیلدی با نام t_sel_blok در فرم HTML وجود داشته باشد.
- اینکه نام فیلد اشتباه املایی نداشته باشد!
اگر با این وجود خطا دریافت می کنید، نیاز به بررسی کل فایل ها است.
نویسنده: رضا
زمان: ۲۳:۴۹:۳۷ - تاریخ: ۱۳۹۳/۰۵/۰۵
سلام
من برای سایتم جوری برنامه نوشتم که تعداد دانلود های هر مقاله کنارشون نشون داده بشه و از صفحه بندی هم استفاده کردم و تو هر صفحه 8 تا مقاله نشون داده میشه که کنار لینک دانلود هاشون که تگ a هستش توی یک تگ div تعداد دانلود هاش رو از بانک می خونم و هر مقاله بسته به تعداد دفعاتی که دانلود شده یک عددی مثل 10 یا 1 دارد می خواستم وقتی کاربر روی تگ a که همون لینک دانلود منه کلیک کرد محتویات تگ div من که تعداد دانلود هستش نمایش داده بشه بدون اینکه صفحه رفرش بشه البته نمی خوام با جاوا اسکریپت تعدادش رو یک واحد افزایش بدم و همه ی کارها رو توی صفحه ی نهایی که پارامترهام ارسال میشن انجام داده ام مثلاً اگر فایل وجود داشت یک واحد به بانکم اضافه بشه و توسط سشن کاری کردم که اگر 10 ار هم زده شد همون یک واحد اضافه بشه. می خواستم بدونم آیا می تونم پایین اون صفحه اگر یک واحد اضافه شد یا نه مقدارش رو از بانک بگیرم و دوباره تو همون تگ div دریافتش کنم. مبنای تشخیص مقاله در سایتم بر اساس نام فایله که به صورت filename=test هستش
پاسخ: 
کلیک کاربر بر روی یک لینک می تواند مبنای یک رویداد در جاوا اسکریپت باشد که به فرض می توان به وسلیه آن یک تابع Ajax را جهت برقراری ارتباط با سرور (در بستر متد POST یا GET) بدون رفرش صفحه فراخوانی کرد، یا یک تابع جاوا اسکریپتی را جهت نمایش یک عنصر فراخوانی کرد، لذا محدودیتی برای طرح مد نظر شما نیست، منتها باید با نحوه مدیریت و نمایش اطلاعات برگردانده شده توسط Ajax آشنا باشید که این به تجربه شما بستگی دارد.
نویسنده: رضا
زمان: ۰۱:۳۸:۳۸ - تاریخ: ۱۳۹۳/۰۶/۰۶
با سلام
آیا میشه به جای کد زیر
xmlhttp.open("GET","textfile.php",true);
xmlhttp.send();
از کد زیر استفاده کرد
xmlhttp.open("GET","http://example.com/textfile.php",true);
xmlhttp.send();
یعنی به یک url به جز سایت خودمان اطلاعات ارسال کرد؟؟
پاسخ: 
ارسال درخواست Ajax در مرورگر محدود به همان سرور است، لذا امکان استفاده از آدرس یک سایت دیگر نیست، صرفا جهت اطلاعات بیشتر برای این کار باید از جی کئوری و JSONP request استفاده کنید که خود آموزش مجزا می طلبد!
یک راه حل دیگر ارسال درخواست به همان سرور و ایجاد درخواست های بعدی با PHP است.
نویسنده: سروش
زمان: ۱۲:۴۸:۵۲ - تاریخ: ۱۳۹۳/۰۸/۳۰
سلام من وقتی با متد get اطلاعاتی را با زبان فارسی ارسال میکنم در مقصد به صورت ؟ در می آید در حالی که اطلاعات دریافتی درست است. لطفا کمک کنید
پاسخ: 
توضیحات داده شده برای ارائه پاسخ دقیق کافی نیست!
مشخص نکرده اید که آیا اطلاعات پس از ذخیره در دیتابیس به این شکل دیده می شوند یا با گرفتن خروجی مستقیم، در هر صورت در اینگونه موارد معمولا مشکلی در یونیکد صفحات یا برنامه وجود دارد که تشخیص آن اغلب تنها با تست امکانپذیر است.
نویسنده: saeed
زمان: ۱۶:۲۵:۳۰ - تاریخ: ۱۳۹۳/۰۹/۰۳
سلام. من یک پنل پیامک دارم که این قابلیت رو داره که پیامک های دریافتی رو با جزئیات کامل به یک آدرس url ارسال کنه. (یادم رفت اینو اول بگم که من اصلا کدنویسی و ... بلد نیستم) که این کار رو با post انجام میده. حالا من باید اینها رو get کنم. اینا رو از پشتیبانی پرسیدم. ولی نمیدونم چجوری. با کلی اصرار این تیکه کد رو ازشون گرفتم:
$from = $_POST['from'];
$to = $_POST['to'];
$message = $_POST['message'];
$timestamp = $_POST['timestamp'];
$ticket = $_POST['ticket'];
//save in a file
file_put_contents('1.txt', print_r($_POST, true));
// save in database
$con=mysqli_connect("hostname","username","password","database name");
mysqli_query($con,'SET NAMES `utf8`');
mysqli_query($con,"INSERT INTO `table name` (`from`, `to`, `messege`, `time` ,`ticket`)
VALUES ('$from', '$to', '$message', '$timestamp','$ticket')");
mysqli_close($con);
?>
ولی کار نمیکنه.
این کد رو داخل یک فایل php میریزم. توی همون پوشه یه فایل 1.txt درست میکنم و پرمیزن رو 777 میزارم ولی اطلاعاتی توی فایل تکست ذخیره نمیشه.
من فقط میخام جزئیات پیامک های دریافتی توی یک فایلی ذخیره بشه. (کاری به دیتابیس ندارم)
ممنون میشم اگه راهنمایی کنید چیکار کنم.
پاسخ: 
دوست گرامی باید با نحوه کار تابع file_put_contents آشنا باشید، این تابع برای باز کردن یک فایل و نوشتن اطلاعات در آن استفاده می شود، ظاهرا در کد شما برای آرگومان دوم این تابع هیچ مقداری قرار نداده اید! در بخش دوم تابع باید یک مقدار قرار دهید که می تواند به فرض متغیر message باشد:
<?php
file_put_contents('1.txt', $message, FILE_APPEND);
?>
البته قاعدتا مدیریت سفارشی اطلاعات بدون آشنایی با برنامه نویسی PHP کار ساده ای نخواهد بود!
http://php.net/manual/en/function.file-put-contents.php
نویسنده: سپیده
زمان: ۰۱:۱۳:۳۳ - تاریخ: ۱۳۹۳/۱۰/۲۹
سلام. ممنون ازسایت پر محتواتون.
من دو کامبو باکس دارم که با ایجکس تونستم با انتخاب یک گزینه از کامبو باکس اولی، گزینه های کامبو باکس بعدی از پایگاه داده استخراج بشه، مشکل من اینکه حالا نمیتونم مقدار انتخابی کامبو باکس دومی رو با استفاده از فرم و ایجکس به صفحه ای دیگری ارسال کنم، یعنی کامبو باکس دومی رو به عنوان عناصر فرمم نمی شناسه. ممنون میشم راهنماییم کنید
پاسخ: 
هرچند بدون دیدن و تست سورس کدهای صفحه نمی توان پاسخ دقیقی داد، اما بررسی کنید که خروجی قسمت Ajax در بین دو تگ form چاپ شود نه خارج از آنها، به عبارتی بلاک خروجی برای نمایش پاسخ Ajax باید بین دو تگ form باشد، همچنین از صحیح بودن name فیلدها اطمینان حاصل کنید (برای تسلط بیشتر می توانید سورس صفحه را با افزونه View Source Chart مرورگر فایرفاکس ببینید).
نویسنده: ahmad
زمان: ۰۸:۵۳:۳۵ - تاریخ: ۱۳۹۳/۱۱/۲۵
سلام
من یه map دارم تو صفحه
<area shape="rect" coords="0,0,20,20" href="$site" title="$title" id="$id">
این مقادیرشه
الان می خوام این سه تا متغیر رو از دیتابیس بخونه و جایگذاری کنه
توی فایل js با تابع
onmouseover="show1(this)"
اطلاعات دیتابیس و کوئری که می خوام رو زدم اما اطلاعاتی لود نمی کنه میشه راهنمایی کنید؟
پاسخ: 
اصولا این کار باید در هنگام چاپ خروجی توسط PHP انجام شود، در دستورات بالا از echo قبل از متغیر استفاده نشده ضمن اینکه دستورات باید درون تگ php تعریف شوند، اگر هم قرار باشد توسط Ajax مقادیر از سرور گرفته و در صفحه جایگزین مقادیر فعلی شوند، باید ضمن آشنایی با Ajax با توابعی مانند split و همچنین متدهای پر کاربرد در جاوا اسکریپت مانند document.getElementById آشنا باشید.
نویسنده: ali
زمان: ۱۵:۵۶:۵۶ - تاریخ: ۱۳۹۴/۰۱/۱۰
آقا دمت گرم من تازه شروع کردم PHP رو. تو ایجکس مشکلی داشتم که با خوندن این مطلب بر طرف شد. ممنون
نویسنده: امین
زمان: ۱۸:۴۱:۱۸ - تاریخ: ۱۳۹۴/۰۳/۲۲
سلام و خسته نباشید
ممنون بابت اموزش های مفیدتون
سایت های وردپرسی ازچه متدی استفاده میکنند که آدرس دهی صفحات به شکل های زیر هست
www.site.com/post/454
www.site.com/post/5225.html
www.site.com/post/5225.aspx
مثلا اگه الان من از طریق متد get استفاده کرده باشم و ادرس دهی صفحاتم به شکل زیر باشه
www.site.com/?post=454 
باید از چه متدی استفاده کنم که به شکل بالا در بیاد ؟ اسم متد چی هست ؟
با تشکر
پاسخ: 
لطفا در وب عبارت "دوباره نویسی لینک با htaccess" یا "نحوه rewrite آدرس های URL با htaccess" را جستجو کنید!
نویسنده: saeid
زمان: ۱۶:۱۱:۳۸ - تاریخ: ۱۳۹۴/۰۳/۲۸
سلام
ببخشید شیوه صحیح کد زیر به چه شکل هست؟
$name = $_POST['$data['id']'];
یعنی میخام اون نامی که گذاشته میشه در تابع post رو از دیتابیس دریافت کنم ولی با جایگذاری با خطا مواجه میشم
با تشکر
پاسخ: 
هرچند دقیقا متوجه منظورتان نشدیم، اما متد POST مقادیر را از فرم های وب یا مقادیر ارسال شده از دستورات Ajax را دریافت می کند نه از دیتابیس، برای دریافت مقادیر از دیتابیس باید پرس و جوی MySQL بنویسید و در حلقه while خروجی را دریافت کنید، اگر هم می خواهید مقدار ارسال شده از متد POST را در پرس و جو استفاده کنید، باید ابتدا به روش زیر مقدار را دریافت و سپس در پرس و جو جایگذاری کنید، به فرض:
$name = $_POST['id']'];

SELECT name, family FROM user WHERE id = '$name'
paged صفحه 2 از 3




more لطفا دقت کنید که یادداشت های زیر منتشر نشده و حذف خواهند شد:
- یادداشت های خارج از موضوع این مطلب.
- سوالات کلی، غیر ضروری و مشکلاتی که هیچ تلاشی برای رفع آن نکرده باشید.
- نظرات حاوی کدها و اسکریپت های خیلی طولانی (به طور مثال کد کامل قالب وبلاگ).

6 × 6
 refresh
آگهی
رنگین کمان عکس
Ranginkamaan.com

آرشیو عکس های باکیفیت با موضوعات متنوع...
پرشین آی تی
Persianit.net

آموزش و دانلود پروژه های برنامه نویسی سی شارپ (#C)
سامانه استخدام ایران
Iran-karyab.com

اطلاع رسانی استخدام های معتبر دانلود رایگان نمونه سئوالات