parsgreen.com
article

ارسال و دریافت اطلاعات با متد get و post در آژاکس (ajax)

ajax-asynchronous

پس از آشنایی اولیه با فناوری آژاکس (ajax) و ارسال و دریافت اطلاعات به صورت پنهانی و در پشت زمینه (بدون رفرش صفحه)، در این مطلب می خواهیم نحوه استفاده از متُد get و post (دو شیوه استاندارد برای رد و بدل کردن محتوا بین صفحات وب و فایل های سرور) برای دریافت محتوای یک فایل متنی یا php را آموزش دهیم، لطفا توجه داشته باشید که در این مطلب تنها مباحثی را شرح خواهیم داد که در جلسه قبل ذکر نکرده ایم، لذا اگر نکته ای به نظر مبهم است، قبل از طرح سئوال ابتدا به مطالب گذشته رجوع نمائید.

همانطور که پیش از این گفتیم شیوه نگارش یک درخواست برای دریافت اطلاعات در ajax به صورت زیر است:
xmlhttp.open("GET","textfile.php",true);
xmlhttp.send();
توضیح:
- پارامترهای xmlhttp.open سه مورد هستند: متد، فایل و غيرهمزمانی (asynchronously) که با دو مقدار true یا false مشخص می شود.
- غيرهمزمانی (asynchronously) به معنی این است که با true بودن این قابلیت، درخواست آژاکسی، وقفه ای در اجرای ادامه کد در صفحه ایجاد نمی کند (ادامه کد بدون توجه به دریافت یا عدم دریافت پاسخ درخواست آژاکسی از سرور، اجرا می شود).
- xmlhttp.send برای متد get مقادیری ندارد، اما برای متد post مقادیر رشته ای (string) دارد.

کدام متد را استفاده کنیم؟


متد get سریع تر و ساده تر است و در بسیاری از موارد قابل استفاده است، اما در موارد زیر تنها از post استفاده کنید:
- فایل هدف نیاز به، به روزرسانی پی در پی (بدون کَش شدن) داشته باشد یا اطلاعات در پایگاه داده ذخیره شوند.
- مقادیر زیادی از اطلاعات ارسال شوند (متد post محدودیت حجمی ندارد).
- ارسال اطلاعات فرم ها مخصوصا اطلاعات حساس کاربران از طریق متد post ایمن تر است.
در مثال زیر ما اطلاعاتی فرضی را توسط متد get برای یک فایل php با نام ajax-get.php ارسال می کنیم و پاسخ را در بلاکی با آی دی divid خروجی می دهیم:

فایل ajax-get.php


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

فایل html حاوی درخواست و تنظیمات آژاکسی


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>وبگو | ارسال و دریافت اطلاعات با متد get</title>
<!-- http://webgoo.ir -->
<script type="text/javascript">
//<![CDATA[
function loadFile()
{
var xmlhttp;
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("divid").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","ajax-get.php?site=webgoo&domain=webgoo.ir",true);
xmlhttp.send();
}
//]]>
</script>
<style type="text/css">
body{
    font-family:Tahoma, Geneva, sans-serif;
    font-size:12px;
    direction:rtl;
}
</style>
</head>
<body>
<button type="button" onclick="loadFile()">ارسال درخواست آژاکسی</button>
<div id="divid"></div>
</body>
</html>
پیش نمایش
متد post شباهت زیادی به get دارد، با این تفاوت که در این درخواست مانند فرم های عادی html مقادیر تحت عنوان header به مرورگر ارسال می شود و از طرفی xmlhttp.send دارای مقادیر رشته ای است.

فایل ajax-post.php


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

کد html و تنظیمات آژاکسی


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>وبگو | ارسال و دریافت اطلاعات با متد post</title>
<!-- http://webgoo.ir -->
<script type="text/javascript">
//<![CDATA[
function loadFile()
{
var xmlhttp;
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("divid").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("POST","ajax-post.php",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("site=webgoo&domain=webgoo.ir");
}
//]]>
</script>
<style type="text/css">
body{
    font-family:Tahoma, Geneva, sans-serif;
    font-size:12px;
    direction:rtl;
}
</style>
</head>
<body>
<button type="button" onclick="loadFile()">ارسال درخواست آژاکسی</button>
<div id="divid"></div>
</body>
</html>
پیش نمایش
توضیح:
- xmlhttp.setRequestHeader برای متد post مقادیر Header را به مرورگر ارسال می کند.
- xmlhttp.send با مقادیر خود پارامترها را به فایل ajax-post.php ارسال می کند، این پارامترها می توانند از یک فرم html نیز دریافت شوند (در مثال بالا پارامتر domain و site به طور مستقیم ارسال شده اند)، البته بدین منظور (ارسال اطلاعات یک فرم) نیاز به توابعی است که در بخش آموزش کاربردی آژاکس در این رابطه بیشتر خواهیم گفت.
sectionدسته بندی: آموزش مقدماتی » Ajax
related مطالب بیشتر:
» فریم ورک های آژاکس (Ajax Frameworks)
» نمایش و ذخیره اطلاعات فایل با آژاکس (Ajax)
» نمایش افکت fade in با آژاکس (ajax)
» نمایش پیام و تصویر در حال بارگذاری (loading) در آژاکس (ajax)
» آشنایی با برنامه نویسی آژاکس (ajax)، تئوری نوین وب
commentنظرات (۳۸ یادداشت برای این مطلب ارسال شده است)
نویسنده: امیرحسین
زمان: ۱۷:۲۲:۲۶ - تاریخ: ۱۳۹۱/۰۶/۱۴
مرسی خیلی آموزش عالی بود من که استفاده کردم!
نویسنده: رضا
زمان: ۱۷:۳۷:۱۶ - تاریخ: ۱۳۹۱/۱۰/۱۹
سلام
من میخواهم یک فیلد متنی داشته باشم و چند تا آپشن .
کاربر مثلا نامش رو تایپ میکنه و بعد یکی از گزینه ها رو انتخاب میکنه و وقتی دکمه ثبت رو میزنه اطلاعاتش بصورت زیر به یک آدرس خاص با متد پست ارسال بشه
[name-option-matn delkhahe man]
ممنون میشم اگه راهنماییم کنید
پاسخ: 
سلام
برای ارسال اطلاعات یک فرم به سرور از نمونه ارائه شده در آموزش زیر استفاده کنید:
ارسال اطلاعات فرم با آژاکس (ajax) و نمایش پیام در حال پردازش (loading)
نویسنده: محمدرضا
زمان: ۱۷:۱۱:۴۷ - تاریخ: ۱۳۹۱/۱۰/۲۴
سلام.
من آموزشتون رو دیدم و خواستم یکم روش کار کنم. خیلی جالب بود. ولی مشکلی برخوردم.
سایت موزیک رو در نظر بگیرید که برای هر خبرش دکمه های لایک و دیسلایک داره. مثل
http://www.tehranmusic240.com
منم رفتم مثل این بسازم. ولی الان مشکل اینه که اسکریپت رو توی حلقه php گذاشتم تا مشخص بشه که لایک یا دیسلایک برای کدوم خبر زده شده. ولی وقتی روی هر کدوم از خبر ها دکمه ی لایک یا دیسلایک رو میزنم، فقط مال اولین خبر اضافه میشه تو بانکش!!!
کدهای php خبرها:
<?php 
if($totalRows_rs_post >0){
do{ ?>
<div class="pastmanage"><div class="pasthead">
<div class="title"><a href="post-view-<?php echo $row_rs_post['id']; ?>-<?php echo $row_rs_post['title']; ?>"><?php echo $row_rs_post['title']; ?></a></div><div class="detailpst">
<div class="aut">نویسنده : <?php echo $row_rs_post['author']; ?></div>
<div class="cat">شاخه : <?php
$catid = $row_rs_post['cat'];
mysql_select_db($database_cn, $cn);
$query_Recordset2 = "SELECT * FROM ne_cat WHERE id = {$catid} AND active = '1'";
$Recordset2 = mysql_query($query_Recordset2, $cn) or die(mysql_error());
$row_Recordset2 = mysql_fetch_assoc($Recordset2);
$totalRows_Recordset2 = mysql_num_rows($Recordset2);
echo $row_Recordset2['title'];
mysql_free_result($Recordset2);
?></div>
<div class="vis">مشاهده : <?php echo $row_rs_post['visit']; ?></div>
<div class="scr">نظرات : <?php

$news_id = $row_rs_post['id'];
mysql_select_db($database_cn, $cn);
$query_Recordset1 = "SELECT * FROM ne_nazar WHERE id_post = {$news_id} AND active = '1'";
$Recordset1 = mysql_query($query_Recordset1, $cn) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);
echo $totalRows_Recordset1;
mysql_free_result($Recordset1);
?></div></div></div>
<div class="pastcon"><p align="center"><font color="#000000"><?php echo $row_rs_post['kholase']; ?></font></p>
<br></div><div class="pastmor"><div class="mro"><a href="post-view-<?php echo $row_rs_post['id']; ?>-<?php echo $row_rs_post['title']; ?>">ادامه</a></div>
<div class="rate">
<style>
.dislike{background:url(images/dislike.png) no-repeat !important;
border:none;
width:25px;
}
.like{background:url(images/like.png) no-repeat !important; border:none;
width:25px;
}
</style><script type="text/javascript">
//<![CDATA[
function likeloadFile()
{
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{ document.getElementById("divid1").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","get-ajax.php?id=<?php echo $row_rs_post['id']; ?>&like=1",true);
xmlhttp.send();
}
function dislikeloadFile()
{
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("divid2").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","get-ajax.php?id=<?php echo $row_rs_post['id']; ?>&dislike=1",true);
xmlhttp.send();
}

//]]>
</script>
<input type="button" class="like" onclick="likeloadFile()">می پسندم(<?php echo $row_rs_post['like']; ?>)</button>

<input type="button" class="dislike" onclick="dislikeloadFile()"> نمی پسندم(<?php echo $row_rs_post['dislike']; ?>) </button>
<div id="unit_long1611">

</div>
</div><div class="psti"><?php echo $row_rs_post['date']; ?></div></div></div>

<?php } while ($row_rs_post = mysql_fetch_assoc($rs_post));} ?>
کد های فایل get-ajax.php
<?php require_once('../Connections/cn.php');  
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
if (PHP_VERSION < 6) {
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
}

$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
}
$colname_Recordset1 = "-1";
if (isset($_GET['id'])) {
$colname_Recordset1 = $_GET['id'];
}
if(isset($_GET['like'])){
mysql_select_db($database_cn, $cn);
$query_Recordset1 = sprintf("SELECT * FROM ne_post WHERE id = %s", GetSQLValueString($colname_Recordset1, "int"));
$Recordset1 = mysql_query($query_Recordset1, $cn) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);
$updateSQL = sprintf("UPDATE ne_post SET `like`=%s WHERE id={$_GET['id']}",
GetSQLValueString($row_Recordset1['like']+1, "int"),
GetSQLValueString($_GET['id'], "int"));

mysql_select_db($database_cn, $cn);
$Result1 = mysql_query($updateSQL, $cn) or die(mysql_error());
}
if(isset($_GET['dislike'])){
mysql_select_db($database_cn, $cn);
$query_Recordset1 = sprintf("SELECT * FROM ne_post WHERE id = %s", GetSQLValueString($colname_Recordset1, "int"));
$Recordset1 = mysql_query($query_Recordset1, $cn) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);
$updateSQL = sprintf("UPDATE ne_post SET `dislike`=%s WHERE id=%s",
GetSQLValueString($row_Recordset1['dislike']+1, "int"),
GetSQLValueString($_GET['id'], "int"));

mysql_select_db($database_cn, $cn);
$Result1 = mysql_query($updateSQL, $cn) or die(mysql_error());

}
mysql_free_result($Recordset1);
?>
مشکل از چیه؟ از حلقه ی php ؟ ممنون میشم بگین چجوری اصلاحش کنم
پاسخ: 
سلام
تا آنجا که کدهای شما را بررسی کردیم حلقه ای وجود نداشت! حلقه ها در php یا از نوع for هستند یا while (عبارت do به تنهایی حلقه نیست و در کنار while به کار می رود) و یا foreach، ضمن اینکه استفاده از حلقه برای کپی اسکریپت به تعداد نظرات کار کاملا اشتباهی است، روش صحیح این است که کد اصلی اسکریپت (کد آژاکس) را یک بار در صفحه قرار دهید و در عوض موارد داینامیک را به عنوان ورودی در هنگام فراخوانی به کد بدهید، به فرض برای هر نظر شماره نظر و سایر موارد مورد نیاز را به عنوان آرگومان تابع خروجی دهید، مثال:
<input type="button" class="like" id='like-22' onclick="likeloadFile('22', 'this.id')">
که در اینجا ما در آرگومان اول شماره نظر و در آرگومان دوم به فرض آی دی مربوط به نظر شماره 22 را به تابع likeloadFile می دهیم و باقی فرآیند با توجه به ورودی ما در موتور آژاکسی انجام می شود.
نویسنده: محمدرضا
زمان: ۲۳:۲۲:۳۸ - تاریخ: ۱۳۹۱/۱۰/۲۴
باتشکر از راهنماییتون.
من حلقه رو به صورت زیر دادم که تو نظر قبلی هم هست. خوب مشاهده نکردید:
do {
<?php } while ($row_rs_post = mysql_fetch_assoc($rs_post));} ?>
نکته ی مهم تر اینکه کدی که گفتین رو نمونه ی خودم پیاده سازی کردم، اصلا دیگه چیزی تو بانک آپدیت نکرد!!
حالا سوال اینه که تو قسمت کد آژاکس جای این کد زیر چجوری بدم؟:
xmlhttp.open("GET","get-ajax.php?id=101&dislike=1",true);
حالا اگه موتور آژاکسی فقط 1 بار تو صفحه بزارم. و با روشی که گفتین بیام و به دکمه های لایک و دیسلایک هر خبر id های همون خبرو بدم. تا اینجاش رو انجام دادم.
ولی به جای
xmlhttp.open("GET","get-ajax.php?id=101&dislike=1",true);
چی بدم که بیاد مقادیر رو از id و onclick بگیره؟؟
پاسخ: 
بله، اشتباه از ما بود، متوجه while پایانی نشدیم، اما برای مشکل فعلی کافی است به تابع خود (در کد آژاکس) آرگومان بدهید، به طور مثال:
function dislikeloadFile(comment,id){...}
و در هنگام فراخوانی با onclick آرگومان ها را به تابع ارسال کنید (مانند مثالی که در پاسخ قبل نوشتیم)، اکنون در تابع می توانید از آرگومان ها استفاده نمائید، به فرض:
xmlhttp.open("GET","get-ajax.php?id="+comment+"&dislike=1",true);
برای تست هم می توانید از alert در جاوا اسکریپت مقادیر آرگومان ها را بررسی کنید، به طور مثال در داخل تابع بنویسید:
alert(comment);
با اجرا شدن تابع، دستور alert مقادیر فعلی آرگومان comment را در یک پنجره هشدار نشان می دهد (که این کار برای خطایابی و درک نحوه عملکرد کد کاربرد زیادی دارد).
نویسنده: محمدرضا
زمان: ۲۰:۴۰:۵۷ - تاریخ: ۱۳۹۱/۱۰/۲۵
با تشکر از لطفتون و سایت مفیدتون. تقریبا همه ی مطالب سایتتون رو تونستم استفاده کنم، به جز این یکی رو!!
قسمت های همه کد من این:
<script type="text/javascript">
//<![CDATA[
function dislikeloadFile(comment,id)//اینجا چی باید باشه
{
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("divid2").innerHTML=xmlhttp.responseText;
}
}
url='index.php?user='+document.getElementById('user').value;
xmlhttp.open("GET","get-ajax.php?id="+comment+"&dislike=1",true);//اینجا چی باید باشه
xmlhttp.send();
}
//]]>
</script>
<?php do {?>
<input type="button" class="like" id='2' onclick="likeloadFile('2', '2')">می پسندم(<?php echo $row_rs_post['like']; ?>)</button><!--اینجا چی بذارم-->
<input type="button" class="dislike" id='2' onclick="dislikeloadFile('2', '2')"> نمی پسندم(<?php echo $row_rs_post['dislike']; ?>) </button>
<div id="unit_long1611">
</div>
</div><div class="psti"><?php echo $row_rs_post['date']; ?></div></div></div>
<?php } while ($row_rs_post = mysql_fetch_assoc($rs_post));} ?>
3 جاش رو مشکل دارم.
پاسخ: 
خواهش می کنیم، اما مشکل شما ناشی از آشنا نبودن با جاوا اسکریپت یا لااقل بحث توابع در جاوا اسکریپت است، به طور مختصر، در قسمت onclick (یعنی هنگام فراخوانی تابع آژاکسی) شما می توانید مقادیری را به عنوان آرگومان (ورودی تابع) به تابع بدهید، اینکه آرگومان ها چه باشند بستگی به هدف و نیاز برنامه شما دارد، به فرض اگر به آی دی هر نظر نیاز است (یعنی در کد جاوا اسکریپت یا php از آی دی نظرها برای هدفی استفاده می شود) آی دی را به عنوان یک آرگومان قرار می دهیم، مثال:
<input type="button" class="like" id="like" onclick="likeloadFile('421');">
در اینجا 421 همان آی دی نظر است (که می تواند به صورت داینامیک و بسته به هر نظر، متفاوت درج شود)، تابع ما باید آرگومان مورد نظر را دریافت کند، پس برای تابع هم آن را تعریف می کنیم (هر چند ابتدا باید برای تابع تعریف می کردیم و بعد از آرگومان ها استفاده می شد):
function dislikeloadFile(comment){...};
برای comment در اینجا نباید چیز دیگری بنویسید چون خود آن آرگومان است و مقادیرش بسته به زمان فراخوانی تابع با onclick می تواند متغیر باشد (به فرض در اینجا مقادیر آن 421 است).
حال از این آرگومان می توان در ادامه تابع استفاده کرد، به فرض ما آن را برای ارسال مقادیر آی دی نظرها در قسمت مربوط به متد get نوشته ایم، به این صورت با اجرای کل کد آدرس زیر (به صورت آژاکسی) از سرور (فایل php) درخواست می شود:
get-ajax.php?id=421&dislike=1
همان طور که ملاحظه می کنید عدد 421 در واقع همان آرگومان اولیه ما بود که موقع فراخوانی تابع به آن نسبت داده بودیم، اما برای ایجاد حالت داینامیک و جاگذاری خودکار آرگومان و مقدار آن در هنگام ارسال درخواست، آن خط را به صورت زیر می نویسیم:
xmlhttp.open("GET","get-ajax.php?id="+comment+"&dislike=1",true);
امیدواریم توضیح کافی بوده باشد. :-)
نویسنده: محمدرضا
زمان: ۱۰:۵۳:۳۹ - تاریخ: ۱۳۹۱/۱۰/۲۶
با تشکر از وقتتون و علمتون.
درست شد. به بهترین شکل ممکن. واقعا سایتت حرف نداره.
منتظر مطالب بعدیت هستیم حاجی.
نویسنده: مهدی
زمان: ۰۱:۲۳:۲۰ - تاریخ: ۱۳۹۲/۰۳/۱۸
با سلام
توی قسمت پست که فقط یه دکمه هست چطور میشه یه فیلد اینپوت باشه که نام سایت رو بخواد و بعد از کلیک روی دکمه نام سایت رو نشون بده
پاسخ: 
سلام
متد POST یک استاندارد HTTP است و الزاما مربوط به فرم های HTML نیست، به هر صورت برای ارسال اطلاعات فرم از طریق آژاکس مطلبی جداگانه در بخش آموزش های کاربردی وجود دارد.
نویسنده: میلاد
زمان: ۱۰:۲۵:۱۶ - تاریخ: ۱۳۹۲/۰۳/۲۳
سلام
لطفا ساختاری فایل get-post.php رو هم بزار .
پاسخ: 
سلام
ضمن تشکر از یادآوری، نام فایل به اشتباه get-post.php درج شده، صحیح آن ajax-get.php است!، مطلب اصلاح شد.
نویسنده: سینا
زمان: ۰۰:۴۰:۵۵ - تاریخ: ۱۳۹۲/۰۴/۲۵
سلام. من می خوام با استفاده از آجاکس چند تا مقدار استخراج شده از دیتابیس دریافت و به عنوان پارامتر تو دستورات جاوا استفاده کنم. مثلا دستور زیر مربوط می شه به کد api دسترسی به نقشه گوگل که من قصد دارم دو تا مقدار a و b رو با استفاده از آجاکس از یه فایل php دریافت کنم و در داخل این دستور استفاده کنم. لطفا راهنمایی کنید
var myLatlng = new google.maps.LatLng(a,b)
پاسخ: 
سلام
اگر با Ajax آشنا باشید، پس از ارسال درخواست، پاسخ سرور (فایل PHP) در xmlhttp.responseText وجود دارد، لذا می توان از این پاسخ در تابع برگشتی (callback function) به نحو دلخواه استفاده کرد، به فرض زمانی که xmlhttp.readyState برابر 4 شد، یک تابع یا هر کد دلخواه دیگر را درون شرط if اجرا کنید، برای مقادیر آرگومان هم می توانید پاسخ را به صورت مستقیم (به طور مثال پاسخ a باشد)، یا پس از تجزیه با متدهایی مانند split (به طور مثال برای حالتی که پاسخ به صورت a|b باشد) استفاده کنید.
نویسنده: سینا
زمان: ۰۱:۰۳:۱۶ - تاریخ: ۱۳۹۲/۰۴/۲۶
متاسفانه من زیاد جاوا اسکریپت بلد نیستم. ممنون میشم کمک کنید. مثلا مقدار بازگشتی که از دیتابیس استخراج شده اینجوریه
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>
نویسنده: سینا
زمان: ۰۹:۲۲:۵۴ - تاریخ: ۱۳۹۲/۰۴/۲۷
ممنون از شما. عالی بود
نویسنده: سینا
زمان: ۱۳:۳۲:۱۸ - تاریخ: ۱۳۹۲/۰۴/۲۹
سلام مجدد. می خواستم راهنمایی کنید چجوری می تونم آرایه ای از چک باکس ها رو از این طریق ارسال کنم ؟ من یه فرم متشکل از 5 تا چک باکس دارم که مقادیر رو با جاوا دریافت کردم. حالا چجوری این آرایه رو با آژاکس ارسال کنم ؟ البته اونایی کنه انتخاب شدن
پاسخ: 
سلام
عبارت "پردازش" را در قسمت جستجوی سایت وارد کنید، در مطلبی جداگانه در این خصوص توضیح داده شده.
نکته: برای ارسال اطلاعات به صورت آرایه از طریق آژاکس، باید ابتدا مقادیر آرایه را به متغیرهایی جداگانه تجزیه و به صورت حالت عادی (یعنی پارمتر و مقدار) درآورید، ارسال مستقیم آرایه از این طریق ممکن نیست (تست نشده).
نویسنده: !Hasanak
زمان: ۱۸:۲۴:۳۲ - تاریخ: ۱۳۹۲/۰۶/۲۲
در مورد دریافت اطلاعات از یک هاست دیگر میشه توضیح بدید
مثلا آدرس
http://w3schools.com/ajax/demo_get.asp
رو با ایجکس بگیریم و نمایش بدیم
انگار به جهات امنیتی این قابلیت کار نمیکنه
پاسخ: 
بله، کدهای جاوا اسکریپت (و به طبع Ajax) از قانون Same Origin Policy تبعیت می کنند که به طور ساده یعنی فعل و انفعالات اینچنین باید در چارچوب دامنه سروری باشد که کدها در آن اجرا می شود، تنها راه کاربردی در اینجا این است که درخواست را به یک فایل PHP در سرور خود ارسال کنید و در آن فایل با استفاده از توابعی مانند file_get_contents مقادیر را از سایت دیگر دریافت کنید و به درخواست آژاکسی به عنوان پاسخ، خروجی بدهید.
نویسنده: mohsen
زمان: ۱۴:۳۴:۵۲ - تاریخ: ۱۳۹۲/۰۸/۰۸
ایا از طریق اژاکس میشه مقدار یه فیلد رو به سمت سرور فرستاد بدون اینکه از فرم استفاده کرده باشیم
پاسخ: 
بله، کافی است مقادیر فیلد را با جاوا اسکریپت دریافت و به عنوان یک پارامتر در قسمت URL درخواست آژاکسی تنظیم و به سرور ارسال کنید (نیاز به آشنایی با جاوا اسکریپت و آژاکس است).
نویسنده: mohsen
زمان: ۱۵:۰۹:۲۹ - تاریخ: ۱۳۹۲/۰۸/۰۹
تشکر می خواستم درباره ی زبان XML بدونم یعنی اینکه این یه زبان کاملا مجزا هست و برای کار با اژاکس حتما باید این زبان رو یاد بگیریم؟ ایا راهی هست بدون یادگیری این زبان با اژاکس کار کرد
پاسخ: 
برای یادیگری Ajax نیازی به داشتن دانش XML نیست، XML یک استاندارد تعریف شده است (یک زبان برنامه نویسی نیست) که با مجموعه ای از قواعد خود به صورت تگ متنی، ارتباط خروجی و ورودی بین سیستم ها و نرم افزارهای مختلف را میسر می کند.
paged صفحه 1 از 3




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

2 × 3
 refresh
آگهی
seonab.com
طراحی نرم افزار اندروید
رنگین کمان عکس
Ranginkamaan.com

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