تخفیف ویژه ماه مبارک رمضان، فرصت یادگیری با 35٪ تخفیف (کد تخفیف: ramazan)

سبد خرید (0)

آموزش آجاکس دیتابیس

از آجاکس می توان برای ارتباط تعاملی با یک دیتابیس استفاده نمود. 


مثالی از آجاکس و دیتابیس

مثال زیر نشان می دهد که چطور یک صفحه ی وب می تواند اطلاعات را از یک دیتابیس به وسیله ی آجاکس دریافت کند:

مثال


اطلاعات مشتری اینجا نمایش داده خواهد شد

خودتان امتحان کنید »


توضیح مثال بالا، تابع ()The showCustomer

هنگامی که یک کاربر از لیست کشویی بالا، یک مشتری را انتخاب می کند، یک تابع به نام ()showCustomer اجرا می شود. این تابع به وسیله ی رویداد onchange راه انداری می شود:

تابع showCustomer

function showCustomer(str) {
  var xhttp; 
  if (str == "") {
    document.getElementById("txtHint").innerHTML = "";
    return;
  }
  xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (xhttp.readyState == 4 && xhttp.status == 200) {
    document.getElementById("txtHint").innerHTML = xhttp.responseText;
    }
  };
  xhttp.open("GET""getcustomer.asp?q="+str, true);
  xhttp.send();
}

تابع ()showCustomer کارهای زیر را انجام می دهد:

  • بررسی اینکه یک مشتری انتخاب شده باشد
  • ایجاد یک شیء XMLHttpRequest
  • ایجاد تابع مورد نظر، که قرار است هنگامی که پاسخ سرور آماده است، اجرا شود
  • ارسال درخواست به یک فایل در سرور
  • توجه کنید که پارامتر q به url اضافه شده است( به همراه محتوای لیست کشویی)

صفحه ی سرور آجاکس

صفحه ای که در سرور قرار دارد و در بالا، به وسیله ی جاوااسکریپت فراخوانی شده است درواقع یک فایل ASP به نام getcustomer.asp است. 

فایل سمت سرور می تواند به سادگی در PHP یا دیگر زبان های سمت سرور، بازنویسی شود. برای این کار مقاله ی زیر را ببینید:

Look at a corresponding example in PHP.

کدهای فایل getcustomer.asp درواقع یک کوئری را بر دیتابیس اعمال می کند و نتیجه را در قالب یک جدول HTML برمی گرداند:

<%
response.expires=-1
sql="SELECT * FROM CUSTOMERS WHERE CUSTOMERID="
sql=sql & "'" & request.querystring("q") & "'"

set conn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open(Server.Mappath("/datafolder/northwind.mdb"))
set rs=Server.CreateObject("ADODB.recordset")
rs.Open sql,conn

response.write("<table>")
do until rs.EOF
  for each x in rs.Fields
    response.write("<tr><td><b>" & x.name & "</b></td>")
    response.write("<td>" & x.value & "</td></tr>")
  next
  rs.MoveNext
loop
response.write("</table>")
%>