واکشی اطلاعات فایل xml با ajax
با استفاده از AJAX، می توانید با یک فایل XML، ارتباط متقابل داشته باشید.
واکشی اطلاعات از یک فایل XML با استفاده از AJAX
در مثال زیر، نحوه واکشی اطلاعات از یک فایل XML، با استفاده از AJAX نشان داده شده است:
مثال (واکشی اطلاعات فایل xml با ajax)
توضیح مثال - صفحه HTML
زمانی که کاربر، یکی از آیتم های لیست کشویی بالا را انتخب می کند، تابع "()showCD" فراخوانی و اجرا می شود. این تابع توسط رویداد "onchange" راه اندازی می شود:
<head>
<script>
function showCD(str)
{
if (str=="")
{
document.getElementById("txtHint").innerHTML="";
return;
}
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("txtHint").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","getcd.php?q="+str,true);
xmlhttp.send();
}
</script>
</head>
<body>
<form>
Select a CD:
<select name="cds" onchange="showCD(this.value)">
<option value="">Select a CD:</option>
<option value="Bob Dylan">Bob Dylan</option>
<option value="Bonnie Tyler">Bonnie Tyler</option>
<option value="Dolly Parton">Dolly Parton</option>
</select>
</form>
<div id="txtHint"><b>اطلاعات گزینه انتخاب شده، اینجا نمایش داده می شود</b></div>
</body>
</html>
تابع ()showCD کارهای زیر را انجام می دهد:
- چک می کند که یک گزینه انتخاب شده باشد. (اگر گزینه ای انتخاب نشده باشد، محتوی عنصر با شناسه "txtHint" خالی می شود)
- یک شیء XMLHttpRequest ایجاد می شود.
- زمانی که پاسخ سرور، آماده شده باشد یک تابع ایجاد و اجرا می شود. (وظیفه این تابع این است که پاسخ دریافت شده از سرور را در عنصر با شناسه "txtHint" قرار دهد)
- درخواست یک فایل به سرور ارسال می شود.
- توجه داشته باشید که یک پارامتر (q) به URL اضافه شده است (با محتوای گزینه انتخاب شده)
توضیح مثال - فایل PHP
فایلی که توسط کد JavaScript بالا صدا زده می شود یک فایل PHP بنام "getcd.php" است.
در فایل "getcd.php"، یک سند XML بنام "cd_catalog.xml" بارگذاری می شود. در این فایل یک جستجو انجام شده و نتیجه بصورت HTML برگردانده می شود.
$q=$_GET["q"];
$xmlDoc = new DOMDocument();
$xmlDoc->load("cd_catalog.xml");
$x=$xmlDoc->getElementsByTagName('ARTIST');
for ($i=0; $i<=($x->length-1); $i++)
{
//Process only element nodes
if ($x->item($i)->nodeType==1)
{
if ($x->item($i)->childNodes->item(0)->nodeValue == $q)
{
$y=($x->item($i)->parentNode);
}
}
}
$cd=($y->childNodes);
for ($i=0;$i<$cd->length;$i++)
{
//Process only element nodes
if ($cd->item($i)->nodeType==1)
{
echo("<b>" . $cd->item($i)->nodeName . ":</b> ");
echo($cd->item($i)->childNodes->item(0)->nodeValue);
echo("<br>");
}
}
?>
توضیح: زمانی که درخواست از JavaScript به فایل PHP ارسال می شود، کارهای زیر اتفاق می افتد:
- یک شیء XML DOM ایجاد می شود.
- تمام عناصر <artist> که با نام ارسال شده از JavaScript تطابق داشته باشند، پیدا می شود.
- یک خروجی مناسب چاپ می شود و در نهاییت در عنصر با شناسه "txtHint" قرار می گیرد.
برای مشاهده فیلم ها و آموزش های پروژه محور برنامه نویسی PHP کلیک کنید.
- نوشته شده توسط امیر پهلوان صادق
- بازدید: 16538
دیدگاهها
میخواستم بدونم اگر عضو ویژه سایت شما بشم سوالاتی در مورد وب سرویس درگاه بانک داشتم و اینکه وب سرویسی رو میخوام که مقادیر تاریخ انقضا و کد cvv2 رو نخواد ، آیا شما میتونید کامل منو راهنمایی کنید ؟
تشکر
شما اگر عضو معمولی هم باشید، در صورت پرسش جواب خودتون رو خواهید گرفت. البته اگر بنده و همکاران قادر به پاسخ سوال شما باشیم.
در مورد اتصال به درگاه بانک، هر بانک به زبانهای مختلف نمونه کدی داره که برنامه نویسان برای اتصال به درگاه اون بانک ازش استفاده می کنن.
کدنویسیش کمی کار داره، ولی در کل سخت نیست.
سلام و عرض ادب...
من میخوام شبیه این سایت http://www.tasnimbehboud.com/ برای سایت خودم جستجو بزارم ولی اصلا درموردش نمیدونم که دقیقا باید چکار کنم ...ممنون میشم راهنماییی بفرمایید...در ضمن یه سوال دیگه هم دارم و اون طریقه ی ارسال ایمیل گروهی هست که نمیدونم باید چکار کنم...ممنون اگر کمکم کنید...با تشکر بابت راهنمایی های قبلی تون...خدا قوت
در رابطه با ارسال خبرنامه یا همان ایمیل گروهی با ایمیل [email protected]
در تماس باشید.
همچنین میتوانید برای جستجو خود از برنامه نویسی کمک بگیرید.
این مورد را نیز خودتان طبق اموزش میتوانید انجام بدهید