Monaseb

به دنبال مناسب ترین ها در سایت مناسب

امروز: شنبه, 30 ارديبهشت 1391

شما اینجا هستید: آموزش و پرورش آژاکس آموزش آژاکس AJAX پیشرفته - قسمت چهارم

آموزش آژاکس AJAX پیشرفته - قسمت چهارم

ایمیل چاپ

آموزش آژاکس AJAX پیشرفته - قسمت چهارم

اگر با تکنیک برنامه نویسی آژاکس AJAX آشنایی ندارید، پیشنهاد می شود ابتدا مطلب "آموزش آژاکس AJAX مقدماتی" را مطالعه نمائید، در این مطلب به بررسی

مثالی از آژاکس به نام "AJAX and responseXML" پرداخته خواهد شد.

مثال آژاکس - AJAX and responseXML

responseText پاسخ HTTP را بصورت یک رشته و responseXML پاسخ را بصورت یک XML بر می گرداند.

خاصیت ResponseXML یک شیء سند XML را بر می گرداند، که می تواند با استفاده از DOM تجزیه و بررسی شود.

مثال زیر به شما نشان می دهد که یک صفحه وب چطور می تواند اطلاعات را از یک پایگاه داده با استفاده از تکنیک آژاکس بگیرید. داده انتخاب شده از پایگاه داده این بار به سند XML تبدیل می شود، سپس از DOM استفاده خواهد تا مقادیر را جهت نمایش استخراج کند.

این مثال با وجود تفاوت های زیادی شبیه مثال "AJAX and MySQL" می باشد: در این مثال ما داده ها را با تابع responseXML بصورت XML از صفحه PHP می گیریم.

دریافت پاسخ بصورت یک سند XML به ما این اجازه را می دهد که به جای اینکه فقط یک خروجی HTML دریافت و نمایش دهیم، این صفحه را به دفعات به روز رسانی کنیم.

در این مثال ما به دفعات عنصر <span> را با اطلاعاتی که از پایگاه داده دریافت کرده ایم به روز رسانی می کنیم.

توضیح مثال – پایگاه داده MySQL

جدول پایگاه داده ایی که ما در این مثال استفاده خواهیم کرد نظیر این است:

id

FirstName

LastName

Age

Hometown

Job

1

Peter

Griffin

41

Quahog

Brewery

2

Lois

Griffin

40

Newport

Piano Teacher

3

Joseph

Swanson

39

Quahog

Police Officer

4

Glenn

Quagmire

41

Quahog

Pilot

توضیح مثال – صفحه HTML

صفحه HTML حاوی یک فرم HTML، چندین عنصر <span> و یک لینک خارجی به فایل جاوا اسکریپت است:

  • فایل جاوا اسکریپت
  • فرم HTML
  • عنصر span

<html>
<head>
<script type="text/javascript" src="/responsexml.js"></script>
</head>
<body>

<form>
Select a User:
<select name="users" onchange="showUser(this.value)">
<option value="1">Peter Griffin</option>
<option value="2">Lois Griffin</option>
<option value="3">Glenn Quagmire</option>
<option value="4">Joseph Swanson</option>
</select>
</form>

<h2><span id="firstname"></span>&nbsp;<span id="lastname"></span></h2>
<span id="job"></span>
<div style="text-align: right">
<span id="age_text"></span>
<span id="age"></span>
<span id="hometown_text"></span>
<span id="hometown"></span>
</div>

</body>
</html>

فرم HTML شامل یک کادر بازشو به نام "users"، با شناسه و نام جهت انتخاب از جدول پایگاه داده است.

عناصر <span> یک نگهدارنده برای مقادیری است که دریافت خواهند شد.

هنگامیکه یک کاربر انتخاب می شود، یک تابع به نام "showUser" اجرا می گردد (که توسط رویداد "onchange" تحریک می شود).

به عبارت دیگر: هر زمان که مقدار کادر بازشو تغییر یابد، تابع showUser فراخوانی می شود، و خروجی را در عناصر <span> نمایش می دهد.

توضیح مثال – کد جاوا اسکریپت

کد جاوا اسکریپت در فایلی به نام "responsexml.js" ذخیره شده است:

var xmlhttp;

function showUser(str)
{
xmlhttp=GetXmlHttpObject();
if (xmlhttp==null)
{
alert ("Browser does not support HTTP Request");
return;
}
var url="responsexml.php";
url=url+"?q="+str;
url=url+"&sid="+Math.random();
xmlhttp.onreadystatechange=stateChanged;
xmlhttp.open("GET",url,true);
xmlhttp.send(null);
}

function stateChanged()
{
if (xmlhttp.readyState==4)
{
xmlDoc=xmlhttp.responseXML;
document.getElementById("firstname").innerHTML=
xmlDoc.getElementsByTagName("firstname")[0].childNodes[0].nodeValue;
document.getElementById("lastname").innerHTML=
xmlDoc.getElementsByTagName("lastname")[0].childNodes[0].nodeValue;
document.getElementById("job").innerHTML=
xmlDoc.getElementsByTagName("job")[0].childNodes[0].nodeValue;
document.getElementById("age_text").innerHTML="Age: ";
document.getElementById("age").innerHTML=
xmlDoc.getElementsByTagName("age")[0].childNodes[0].nodeValue;
document.getElementById("hometown_text").innerHTML="<br/>From: ";
document.getElementById("hometown").innerHTML=
xmlDoc.getElementsByTagName("hometown")[0].childNodes[0].nodeValue;
}
}

function GetXmlHttpObject()
{
if (window.XMLHttpRequest)
{
// code for IE7+, Firefox, Chrome, Opera, Safari
return new XMLHttpRequest();
}
if (window.ActiveXObject)
{
// code for IE6, IE5
return new ActiveXObject("Microsoft.XMLHTTP");
}
return null;
}

توابع stateChanged و GetXmlHttpObject همانند مثال پیشنهاد آژاکس می باشند برای توضیح این توابع به آن رجوع کنید.

تابع stateChanged

وقتیکه یک گزینه از کادر بازشو انتخاب می گردد، تابع مراحل زیر را اجرا می کند:

1- متغیر xmlDoc را با استفاده از تابع responseXML به صورت یک سند XML تنظیم می کند،

2- داده را از سند XML استخراج می کند، و در عنصر <span> متناظر با آن قرار می دهد.

توضیح مثال – صفحه PHP

صفحه PHP که توسط جاوا اسکریپت فراخوانی می شود "responsexml.php" نام دارد.

اسکریپت PHP یک پرس و جوی SQL بروی یک پایگاه داده MySQL اجرا می کند، و نتایح را بصورت یک سند XML بر می گرداند:

<?php
$q=$_GET["q"];

$con = mysql_connect('localhost', 'peter', 'abc123');
if (!$con)
{
die('Could not connect: ' . mysql_error());
}

mysql_select_db("ajax_demo", $con);

$sql="SELECT * FROM user WHERE id = ".$q."";

$result = mysql_query($sql);
header('Content-type: text/xml');
echo '<?xml version="1.0" encoding="ISO-8859-1"?>
<person>';
while($row = mysql_fetch_array($result))
{
echo "<firstname>" . $row['FirstName'] . "</firstname>";
echo "<lastname>" . $row['LastName'] . "</lastname>";
echo "<age>" . $row['Age'] . "</age>";
echo "<hometown>" . $row['Hometown'] . "</hometown>";
echo "<job>" . $row['Job'] . "</job>";
}
echo "</person>";

mysql_close($con);
?>

وقتیکه پرس و جو از جاوا اسکریپت به صفحه PHP ارسال شد، مراحل زیر اتفاق می افتد:

1- متغیر q$ با داده ایی که توسط پارامتر q ارسال شده است تنظیم می گردد.

2- یک اتصال به پایگاه داده MySQL باز می شود.

3- "user" با شناسه (id) مشخص شده پیدا می شود.

4- داده بصورت یک سند XML به خروجی ارسال می شود.

منبع مطلب: w3schools.com

نظرات 

 
+3 #1 سعید 1390-03-16 15:15
چطور میشه یک فایل .php رو در قالب یک وبلاگ نمایش داد بدون اینکه از تگ iframe استفاده کنیم؟
فقط می دونم از کد:



می بایست استفاده کرد اما محتویات test.php نمایان نمی شود
نقل قول
 
 
0 #2 هاترا 1390-12-12 19:06
واقعاااااا اموزشتون عالي عالي بووود
دستتون درد نكنه
لطفا ادامه بدييين
نقل قول
 
 
0 #3 mona 1391-01-18 20:23
دم شما گرم
لطفا ادامه بدید
نقل قول
 
 
0 #4 karimian 1391-02-10 16:30
سلام دوست عزیز
من آژاکس رو با همین 4 تا تمرین ساده شما یاد گرفتم
دست شما درد نکنه ممنونم از شما
ان شا اله چیزای خیلی بیشتر و بزرگتری یاد بگیرید
نقل قول
 
مطالب زیر پیشنهاد می شود
Share |