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

به طور کلی ارسال و دریافت اطلاعات در بستر وب با دو متد 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>
پیش نمایشارسال پارامترها در ای جکس صرفا به روش ثابت مانند نمونه کدهای بالا محدود نمی شود، در آموزش های بعدی خواهیم دید که چگونه می توان به نحو حرفه ای تر و با قابلیت تعاملی بیشتر به صورت پویا از قابلیت های ای جکس در طراحی امکانات و رابط کاربری برنامه های تحت وب استفاده کرد.
دسته بندی: آموزش مقدماتی » Ajax
برچسب ها: Ajax

ذخیره و نمایش اطلاعات فایل با ای جکس (Ajax) و PHP
نمایش پیام در حال بارگذاری با ای جکس (Ajax)
نمایش افکت fade in با ای جکس (Ajax)
فریم ورک های ای جکس (Ajax Frameworks)
آموزش ای جکس (Ajax)، تکنیک غیرهمزمانی در وب
دیدگاه


۱۲:۴۸ ۱۳۹۳/۰۸/۳۰
سلام من وقتی با متد get اطلاعاتی را با زبان فارسی ارسال میکنم در مقصد به صورت ؟ در می آید در حالی که اطلاعات دریافتی درست است. لطفا کمک کنید
توضیحات داده شده برای ارائه پاسخ دقیق کافی نیست!
مشخص نکرده اید که آیا اطلاعات پس از ذخیره در دیتابیس به این شکل دیده می شوند یا با گرفتن خروجی مستقیم، در هر صورت در اینگونه موارد معمولا مشکلی در یونیکد صفحات یا برنامه وجود دارد که تشخیص آن اغلب تنها با تست امکانپذیر است.
مشخص نکرده اید که آیا اطلاعات پس از ذخیره در دیتابیس به این شکل دیده می شوند یا با گرفتن خروجی مستقیم، در هر صورت در اینگونه موارد معمولا مشکلی در یونیکد صفحات یا برنامه وجود دارد که تشخیص آن اغلب تنها با تست امکانپذیر است.
۰۱:۳۸ ۱۳۹۳/۰۶/۰۶
با سلام
آیا میشه به جای کد زیر
آیا میشه به جای کد زیر
xmlhttp.open("GET","textfile.php",true);
xmlhttp.send();
از کد زیر استفاده کردxmlhttp.open("GET","http://example.com/textfile.php",true);
xmlhttp.send();
یعنی به یک url به جز سایت خودمان اطلاعات ارسال کرد؟؟ارسال درخواست Ajax در مرورگر محدود به همان سرور است، لذا امکان استفاده از آدرس یک سایت دیگر نیست، صرفا جهت اطلاعات بیشتر برای این کار باید از جی کئوری و JSONP request استفاده کنید که خود آموزش مجزا می طلبد!
یک راه حل دیگر ارسال درخواست به همان سرور و ایجاد درخواست های بعدی با PHP است.
یک راه حل دیگر ارسال درخواست به همان سرور و ایجاد درخواست های بعدی با PHP است.
رضا
۲۳:۴۹ ۱۳۹۳/۰۵/۰۵
سلام
من برای سایتم جوری برنامه نوشتم که تعداد دانلود های هر مقاله کنارشون نشون داده بشه و از صفحه بندی هم استفاده کردم و تو هر صفحه 8 تا مقاله نشون داده میشه که کنار لینک دانلود هاشون که تگ a هستش توی یک تگ div تعداد دانلود هاش رو از بانک می خونم و هر مقاله بسته به تعداد دفعاتی که دانلود شده یک عددی مثل 10 یا 1 دارد می خواستم وقتی کاربر روی تگ a که همون لینک دانلود منه کلیک کرد محتویات تگ div من که تعداد دانلود هستش نمایش داده بشه بدون اینکه صفحه رفرش بشه البته نمی خوام با جاوا اسکریپت تعدادش رو یک واحد افزایش بدم و همه ی کارها رو توی صفحه ی نهایی که پارامترهام ارسال میشن انجام داده ام مثلاً اگر فایل وجود داشت یک واحد به بانکم اضافه بشه و توسط سشن کاری کردم که اگر 10 ار هم زده شد همون یک واحد اضافه بشه. می خواستم بدونم آیا می تونم پایین اون صفحه اگر یک واحد اضافه شد یا نه مقدارش رو از بانک بگیرم و دوباره تو همون تگ div دریافتش کنم. مبنای تشخیص مقاله در سایتم بر اساس نام فایله که به صورت filename=test هستش
من برای سایتم جوری برنامه نوشتم که تعداد دانلود های هر مقاله کنارشون نشون داده بشه و از صفحه بندی هم استفاده کردم و تو هر صفحه 8 تا مقاله نشون داده میشه که کنار لینک دانلود هاشون که تگ a هستش توی یک تگ div تعداد دانلود هاش رو از بانک می خونم و هر مقاله بسته به تعداد دفعاتی که دانلود شده یک عددی مثل 10 یا 1 دارد می خواستم وقتی کاربر روی تگ a که همون لینک دانلود منه کلیک کرد محتویات تگ div من که تعداد دانلود هستش نمایش داده بشه بدون اینکه صفحه رفرش بشه البته نمی خوام با جاوا اسکریپت تعدادش رو یک واحد افزایش بدم و همه ی کارها رو توی صفحه ی نهایی که پارامترهام ارسال میشن انجام داده ام مثلاً اگر فایل وجود داشت یک واحد به بانکم اضافه بشه و توسط سشن کاری کردم که اگر 10 ار هم زده شد همون یک واحد اضافه بشه. می خواستم بدونم آیا می تونم پایین اون صفحه اگر یک واحد اضافه شد یا نه مقدارش رو از بانک بگیرم و دوباره تو همون تگ div دریافتش کنم. مبنای تشخیص مقاله در سایتم بر اساس نام فایله که به صورت filename=test هستش
کلیک کاربر بر روی یک لینک می تواند مبنای یک رویداد در جاوا اسکریپت باشد که به فرض می توان به وسلیه آن یک تابع Ajax را جهت برقراری ارتباط با سرور (در بستر متد POST یا GET) بدون رفرش صفحه فراخوانی کرد، یا یک تابع جاوا اسکریپتی را جهت نمایش یک عنصر فراخوانی کرد، لذا محدودیتی برای طرح مد نظر شما نیست، منتها باید با نحوه مدیریت و نمایش اطلاعات برگردانده شده توسط Ajax آشنا باشید که این به تجربه شما بستگی دارد.
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 وجود داشته باشد.
- اینکه نام فیلد اشتباه املایی نداشته باشد!
اگر با این وجود خطا دریافت می کنید، نیاز به بررسی کل فایل ها است.
- اینکه فیلدی با نام t_sel_blok در فرم HTML وجود داشته باشد.
- اینکه نام فیلد اشتباه املایی نداشته باشد!
اگر با این وجود خطا دریافت می کنید، نیاز به بررسی کل فایل ها است.
ramin
۲۳:۰۸ ۱۳۹۲/۱۲/۲۸
سلام.
بهترین روش برای قسمت ویراش خبرها منتشر شده استفاده از چه روشی است ؟ ... (برای مثال اینکه روی عنوان خبر کلیک کنند، بره توی یه صفحه جدید یا همون جا کادری باز بشه ؟ ... میشه راهنمایی کنید
بهترین روش برای قسمت ویراش خبرها منتشر شده استفاده از چه روشی است ؟ ... (برای مثال اینکه روی عنوان خبر کلیک کنند، بره توی یه صفحه جدید یا همون جا کادری باز بشه ؟ ... میشه راهنمایی کنید
روش خاصی وجود ندارد! این موارد سلیقه ای و بسته به نیاز سایت دارند، می توانید با الگوبرداری از چند سایت خبری مشابه یک حالت یا ترکیبی از آنها را در سایتتان داشته باشید، البته صرف انتخاب روش مهم نیست، بلکه نحوه پیاده سازی بهنیه آن اهمیت بیشتری دارد.
۱۹:۲۷ ۱۳۹۲/۱۱/۲۶
سلام در هنگام ارسال فرم به صورت زیر
تشکر
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>
۲۳:۲۵ ۱۳۹۲/۱۱/۱۴
سلام در بخشی از 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 + "¶m_1=" + param_1 + "¶m_2=" + param_2;
مصطفی
۲۳:۱۵ ۱۳۹۲/۰۸/۱۱
ببخشید من دقیقا کدهای 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
در مورد نام فایل ها اشتباهی شده بود که اصلاح شد.مصطفی
۱۴:۴۶ ۱۳۹۲/۰۸/۱۰
ببخشید میشه از طریق responseText یه مقدار عددی رو از سرور بگیریم؟
بله، این کار با Ajax به راحتی امکانپذیر است!
mohsen
۱۵:۰۹ ۱۳۹۲/۰۸/۰۹
تشکر می خواستم درباره ی زبان XML بدونم یعنی اینکه این یه زبان کاملا مجزا هست و برای کار با اژاکس حتما باید این زبان رو یاد بگیریم؟ ایا راهی هست بدون یادگیری این زبان با اژاکس کار کرد
برای یادگیری Ajax نیازی به داشتن دانش XML نیست، XML یک استاندارد تعریف شده است (یک زبان برنامه نویسی نیست) که با مجموعه ای از قواعد خود به صورت تگ متنی، ارتباط خروجی و ورودی بین سیستم ها و نرم افزارهای مختلف را میسر می کند.
mohsen
۱۴:۳۴ ۱۳۹۲/۰۸/۰۸
ایا از طریق اژاکس میشه مقدار یه فیلد رو به سمت سرور فرستاد بدون اینکه از فرم استفاده کرده باشیم
بله، کافی است مقادیر فیلد را با جاوا اسکریپت دریافت و به عنوان یک پارامتر در قسمت URL درخواست Ajax تنظیم و به سرور ارسال کنید (نیاز به آشنایی با جاوا اسکریپت و ای جکس است).
۱۸:۲۴ ۱۳۹۲/۰۶/۲۲
در مورد دریافت اطلاعات از یک هاست دیگر میشه توضیح بدید
مثلا آدرس
انگار به جهات امنیتی این قابلیت کار نمیکنه
مثلا آدرس
http://w3schools.com/ajax/demo_get.asp
رو با ایجکس بگیریم و نمایش بدیمانگار به جهات امنیتی این قابلیت کار نمیکنه
بله، کدهای جاوا اسکریپت (و به طبع Ajax) از قانون Same Origin Policy تبعیت می کنند که به طور ساده یعنی فعل و انفعالات اینچنین باید در چارچوب دامنه سروری باشد که کدها در آن اجرا می شود، تنها راه کاربردی در اینجا این است که درخواست را به یک فایل PHP در سرور خود ارسال کنید و در آن فایل با استفاده از توابعی مانند file_get_contents مقادیر را از سایت دیگر دریافت کنید و به درخواست ای جکس به عنوان پاسخ، خروجی بدهید.
سینا
۱۳:۳۲ ۱۳۹۲/۰۴/۲۹
سلام مجدد. می خواستم راهنمایی کنید چجوری می تونم آرایه ای از چک باکس ها رو از این طریق ارسال کنم ؟ من یه فرم متشکل از 5 تا چک باکس دارم که مقادیر رو با جاوا دریافت کردم. حالا چجوری این آرایه رو با آژاکس ارسال کنم ؟ البته اونایی کنه انتخاب شدن
عبارت "پردازش" را در قسمت جستجوی سایت وارد کنید، در مطلبی جداگانه در این خصوص توضیح داده شده.
نکته: برای ارسال اطلاعات به صورت آرایه از طریق ای جکس، باید ابتدا مقادیر آرایه را به متغیرهایی جداگانه تجزیه و به صورت حالت عادی (یعنی پارمتر و مقدار) درآورید، ارسال مستقیم آرایه از این طریق ممکن نیست (تست نشده).
نکته: برای ارسال اطلاعات به صورت آرایه از طریق ای جکس، باید ابتدا مقادیر آرایه را به متغیرهایی جداگانه تجزیه و به صورت حالت عادی (یعنی پارمتر و مقدار) درآورید، ارسال مستقیم آرایه از این طریق ممکن نیست (تست نشده).
سینا
۰۹:۲۲ ۱۳۹۲/۰۴/۲۷
ممنون از شما. عالی بود
سینا
۰۱:۰۳ ۱۳۹۲/۰۴/۲۶
متاسفانه من زیاد جاوا اسکریپت بلد نیستم. ممنون میشم کمک کنید. مثلا مقدار بازگشتی که از دیتابیس استخراج شده اینجوریه
34.780888
47.59861
حالا با چه دستوری می تونم مقدار سطر اول رو در یه متغیر و سطر دوم رو در یه متغیر دیگه قرار بدم؟ یا مثلا مقدار دریافتی زیر:34.780888*47.59861
چطور مقدار قبل از * رو در یک متغیر و بعد از * رو در یه متغیر دیگه بریزم. من از این استفاده کردم اما جواب ندادstringobject.slice ( start , end )
از split استفاده کنید، مثال:
<script type="text/javascript">
var str = '34.780888*47.59861';
var splited = str.split("*");
alert('پارامتر اول: ' + splited[0] + ' پارامتر دوم: ' + splited[1])
</script>
- به سوالات کلی، زمانبر، مبهم و مشکلاتی که تلاشی برای رفع آنها نکرده باشید پاسخ مختصر داده شده یا به بخش برنامه نویسی اختصاصی ارجاع داده می شوند.
- کدها و اسکریپت های طولانی را ترجیحا در یک صفحه وب آنلاین یا به صورت حساب موقت و آزمایشی قرار دهید تا امکان بررسی دقیق مشکل و خطایابی میسر باشد.
- تمام دیدگاه های ارسالی خوانده شده و برای هر کاربر مدت زمان لازم جهت پاسخگویی در نظر گرفته می شود، لطفا از طرح سوالات متعدد در بازه زمانی کوتاه خودداری کنید.