Murls Murls
 
   شرح لتقنية ajax الاجكس الية عملها وكيفية التعامل معها

بسم الله الرحمن الرحيم
في هذه المقالة سنتكلم عن الاجكس ماهي الاجكس وماذا تعني وكفية التعامل مع الاجكس
وكيفية بناء الاجكس وماهي الدوال التي تتعامل معها للحصول على هذه التقنية
اولا سنتكلم عن عن صفحة الويب وكيفية الحصول على الببانات
اولا نعندما تضغط على وسم الرابط

 

  
<a href="http:dwal.biz">دوال</a

   



ماذ يحدث
تقوم حاليا بطلب صفحة انترنت على سيرفر ما
فيقوم المستعرض باجراء التعليمات التالية
استخلاص مسار الصفحة الربط من السيرفر المحدد

ارسال الترويسات المطلوبة الى السيرفر للحصول على صفحة الانترنت
ثم يقوم بارسال الطلب التالي

 

 GET 
/SS/S.PHP HTTP/1.0

 



الى السيرفر المحدد
ثم يقوم بعدها السيرفر باجراء تنفيذ للسطر السابق

  

    user
-agent:Mozlia/4.0 (compatible;MISE 5.5;Windows NT 5.0)

     



ثم يقوم بارسال المستعرض معلومات عن المستعرض واسمه ونوع البيانات المراد استقبالها مثلا

 

  accept
:text/plan,text/html

  





ثم يقوم السيرفر بارسال البيانات التي توضح حالة الطلب

 

 

 HTTP
/1.0  200 OK

 



وهذ الشيفرة تدل على نجاح الطلب
هذه الخطوات تقوم انت بالتعامل معها

كيفية بناء الاجكس

1- انشاء كائن الاجكس للتعامل مع الاتصال
2- فتح الصفحة المراد التعامل معها
3- ارسال بيانات اذا كان بحاجة لذلك
4-ارسال ترويسات للمستعرض
5-الاستماع الى حالة الطلب


الدوال التي ستتعامل معها

 

XMLHttpRequest
() 

او

new ActiveXObject("Microsoft.XMLHTTP")

او

new ActiveXObject("Msxml2.XMLHTTP")

او

new ActiveXObject("Msxml2.XMLHTTP.3.0")

او

 
new ActiveXObject("Msxml2.XMLHTTP.6.0")

 
او

  
new XDomainRequest()





هذه الدالة لانشاء كائن طلب الاجكس ويمكن استخدام احدها
بحسب الشرط المتبع لانه تختلف المستعرضات فيما بينها
فمثلا مزلا
يستخدم

 

 XMLHttpRequest
() 




وهو كائن اصيل في المستعرض
اما فيما تبقى لاصدرات ويندوز انترنت اكسبلور
ويمكنك انشاء كالتالي لضمان انشاء كائن اجكس

 

var  T=new XMLHttpRequest()

                    || new 
ActiveXObject("Microsoft.XMLHTTP")

                    || new 
ActiveXObject("Msxml2.XMLHTTP")

                    || new 
ActiveXObject("Msxml2.XMLHTTP.3.0")

                    || new 
ActiveXObject("Msxml2.XMLHTTP.6.0") || new XDomainRequest();







الدالة

 

open




وهيا دالة فتح الاتصال
تاخذ ثلاثة بارمترات
الاول نوع الطلب
GET او POST
ثم البارمتر الثاني
هو رابط الصفحة المراد اجراء الاتصال معها
ثم البارمتر الثالث وهو اختياري
اما

true==يجعل الاتصال في حالة غير متزامنة
false==يجعل الاتصال متزامن وبقوم باغلاق الصفحة حتى الانتهاء من تنفيذ الطلب
دالة

 

 setRequestHeader

 



تقوم هذه الدالة بارسال التوصيفات الى المستعرض
البارمتر الاول هو اسم التوصيفة
مثلا

 

 Content
-Type

 



ثم قيمة التوصيفة او الترويسة
مثلا

 

 application
/x-www-form-urlencoded

 



مثال

 

  setRequestHeader
("Content-Type"," application/x-www-form-urlencoded");

 




ثم
دالة ارسال البيانات

 

 send

 



تاخذ بارمتر واحد
وهو اما
null
GET في حالة كان نوع الطلب
او البيانات المرسلة اي مثلا

 

 T
=200&R==2000

 



مثال

 

 send
(null);

 
او

  send
("s=200&r=200");

  



ثم دالة الاستماع الى الحدث اي التغيرات التي تحدث من اجراء الطلب


 

 

 onreadystatechange

 



وهيا مهمتها اجراء حدث ما عند حصول اي تغيرات في حالة الطلب
اي تاخذ قيمة وهي دالة
مثال

 

 onreadystatechange
=function() {

 }

 



ثم قيمة الطلب من السيرفر وهيا تكون
تكون قيمة الخاصية التالية

 

 readyState

 



0==لم يتم التهيئة
1==جاري التحميل
2==تم التحميل
3==تفاعلي
4==تم اكماله
ثم
الخاصية التالية

 

 status

 



شيفرة حالة الطلب


وتعود بقيم مختلفة منها
100 ==معلومات
200==نجاح
204 ==المستند لايحتوي على بيانات
300==اعادة توجيه
302== تم نقل المصدر الى مكان اخر
400==خطا
401== يحتاج الى التحقق من المستخدم
4.3==تم رفض الطلب من قبل المخدم
404==الملف غير موجود على المخدم
408 ==فشل اتمام الطلب خلال الفترة المحددة

500==خطا من المخدم وعادة يكون من خطاء في الشيفرة المكتوبة


ثم خاصية استرجاع البيانات

 

 responseText

 



تقوم بارجاع البيانات على شكل نص

اما الخاصية التالية

 

 responseXML

 



تقوم بارجاع البيانات على شكل xml
الخاصية

 

  statusText

  



عبارة عن سبب http
المرجعة من قبل المخدم

اما

 

  getAllresponsel

  



ارجاع كافة الترويسات من المستعرض
اما الدالة

 

   getresponseHeader

   



تقوم باخذ بارمتر واحد وهو اخذ الترويسة المراد الحصول على قيمتها
وتعود بقيمة الترويسة
اما الدالة

 

   Header

   



تقوم بارجاع سلسلة نصية حول الترويسات

وبذلك نكون قد اتنهيا شرح دوال الاجكس الامثلة العملية لذلك

مثال ل get



 

   
function reg() {

    return (new 
XMLHttpRequest()

            || new 
ActiveXObject("Microsoft.XMLHTTP")

            || new 
ActiveXObject("Msxml2.XMLHTTP")

            || new 
ActiveXObject("Msxml2.XMLHTTP.3.0")

            || new 
ActiveXObject("Msxml2.XMLHTTP.6.0"

    || new 
XDomainRequest());

    

}

var 
httpreg();

//فتح قناة الاتصال

http.open('GET','testpost.php?t=200'true);

//ارسال ترويسة للمستعرض بتشفير البيانات المرسلة

http.setRequestHeader("Content-Type","application/x-www-form-urlencoded");

//ارسال البيانات

http.send(null);

//خاصية الاستماع الى الحالة

http.onreadystatechange = function() {

//التحقق من حالة الطلب

if (http.readyState == 4) {

//التحقق من اتمام المهمة

if (http.status == 200){

        
// طباعة النتيجة في وسم هوتمل مثلا

    //<div id="t" ></div>

    
document.getElementById('t').innerHTMLhttp.responseText;

}

}

};







مثال ل post


 

    
return (new XMLHttpRequest()

            || new 
ActiveXObject("Microsoft.XMLHTTP")

            || new 
ActiveXObject("Msxml2.XMLHTTP")

            || new 
ActiveXObject("Msxml2.XMLHTTP.3.0")

            || new 
ActiveXObject("Msxml2.XMLHTTP.6.0"

    || new 
XDomainRequest());

    

}

var 
httpreg();

//فتح قناة الاتصال

http.open('POST','testpost.php'true);

//ارسال ترويسة للمستعرض بتشفير البيانات المرسلة

http.setRequestHeader("Content-Type","application/x-www-form-urlencoded");

//ارسال البيانات

http.send("t=200&r=1000");

//خاصية الاستماع الى الحالة

http.onreadystatechange = function() {

//التحقق من حالة الطلب

if (http.readyState == 4) {

//التحقق من اتمام المهمة

if (http.status == 200){

        
// طباعة النتيجة في وسم هوتمل مثلا

    //<div id="t" ></div>

    
document.getElementById('t').innerHTMLhttp.responseText;

}

}

};








هذه الاجكس بكافة عيونها
وارجو من الله العلي القدير اكون قد اوصلت المعلومة وهذا وقل ربي زدني علما
حرر في تاريخ 2009/06/09 الساعة 08:46:16