أكس جي إس - عميل XMLHttpRequest
- الصفحة السابقة مقدمة أكس جي إس
- الصفحة التالية طلبات AJAX
XMLHttpRequest هي الأساس لـ AJAX.
- إنشاء obj XMLHttpRequest
- تعريف الدالة الاستدعائية
- فتح XMLHttpRequest
- إرسال طلب إلى الخادم
obj XMLHttpRequest
دعم جميع المتصفحات الحديثة obj XMLHttpRequest.
مثل XMLHttpRequest يمكن استخدامها للتبادل البيانات مع الخادم الويب في الخلفية. هذا يعني أنه يمكن تحديث جزء من محتوى الصفحة دون إعادة تحميل الصفحة بأكملها.
إنشاء obj XMLHttpRequest
جميع المتصفحات الحديثة (Chrome، Firefox، IE، Edge، Safari، Opera) تحتوي على obj XMLHttpRequest.
نص تشكيل obj XMLHttpRequest:
variable = new XMLHttpRequest();
تعريف الدالة الاستدعائية
الدالة الاستدعائية هي دالة يتم تمريرها كمعامل إلى دالة أخرى.
في هذه الحالة، يجب أن تحتوي دالة الاستدعاء على الكود الذي يجب تنفيذه عند استعداد الرد.
xhttp.onload = function() { // ما يجب القيام به عند استعداد الرد }
إرسال الطلب
لإرسال طلب إلى الخادم، يمكنك استخدام open()
و send()
الطريقة:
xhttp.open("GET", "ajax_info.txt"); xhttp.send();
مثال
// إنشاء obj XMLHttpRequest تعريف xhttp = new XMLHttpRequest(); // تعريف دالة الاستدعاء xhttp.onload = function() { // يمكنك استخدام البيانات هنا } // إرسال الطلب xhttp.open("GET", "ajax_info.txt"); xhttp.send();
وصول عبر الحدود (Access Across Domains)
لأسباب أمنية، لا يسمح المتصفحات الحديثة بالوصول عبر الحدود.
هذا يعني أن يجب أن تكون الصفحة وملف XML الذي تحاول تحميله موجودين على نفس الخادم.
تكون الأمثلة على CodeW3C.com مفتوحة على ملفات XML موجودة في مجال CodeW3C.com.
إذا كنت ترغب في استخدام مثال أعلاه في أحد صفحات موقعك، يجب أن تكون ملفات XML التي تقوم بتحميلها موجودة على خادمك الخاص.
طرق obj XMLHttpRequest
الطريقة | وصف |
---|---|
new XMLHttpRequest() | إنشاء obj XMLHttpRequest جديد. |
abort() | إلغاء الطلب الحالي. |
getAllResponseHeaders() | يعود إلى معلومات الرأس. |
getResponseHeader() | يعود إلى معلومات الرأس المحددة. |
open(method, url, async, user, psw) |
يحدد الطلب.
|
send() | إرسال الطلب إلى الخادم، للاستخدام في الطلبات GET. |
send(string) | إرسال الطلب إلى الخادم، للاستخدام في الطلبات POST. |
setRequestHeader() | إضافة زوج علامة/قيمة إلى الرأس الذي سيتم إرساله. |
خصائص obj XMLHttpRequest
خاصية | وصف |
---|---|
onload | تعريف الدالة التي يتم استدعاؤها عند استلام (تحميل) الطلب. |
onreadystatechange | تعريف الدالة التي يتم استدعاؤها عند تغيير خاصية readyState. |
readyState |
يُحفظ حالة XMLHttpRequest
|
responseText | يعيد بيانات الرد كنص |
responseXML | يعيد بيانات الرد كبيانات XML |
الحالة |
يعيد رقم حالة الطلب
للحصول على قائمة كاملة، يرجى زيارة مرجع رسائل Http |
statusText | يعيد نص حالة (مثل "حسنًا" أو "غير موجود") |
خاصية onload
عند استخدام XMLHttpRequest، يمكنك تعريف دالة استدعاء لتعمل عند استلام الرد
يرجى تحديد الدالة في onload
يُحدد الدالة في الخاصية
مثال
xhttp.onload = function() { document.getElementById("demo").innerHTML = this.responseText; } xhttp.open("GET", "ajax_info.txt"); xhttp.send();
عديد من الدوال الاستدعائية
إذا كان هناك عدة مهام AJAX في الموقع، فيجب إنشاء دالة تنفيذ XMLHttpRequest لكل مهمة AJAX وتحديد دالة استدعاء لكل مهمة AJAX
يجب أن تحتوي دالة الطلب على URL والوظيفة التي يجب تنفيذها عند استعداد الاستجابة
مثال
loadDoc("url-1", myFunction1); loadDoc("url-2", myFunction2); function loadDoc(url, cFunction) { تعريف xhttp = new XMLHttpRequest(); xhttp.onload = function() {cFunction(this);} xhttp.open("GET", url); xhttp.send(); } function myFunction1(xhttp) { // هنا هي الحركة } function myFunction2(xhttp) { // هنا هي الحركة }
خاصية onload
readyState
تُحفظ الخاصية حالة XMLHttpRequest
onreadystatechange
تُحدد الخاصية دالة استدعاء تعمل عند تغيير خاصية readyState
الحالة
وخصائص statusText
تُحفظ الخاصية خاصية XMLHttpRequest لتحديد حالة الطلب
خاصية | وصف |
---|---|
onreadystatechange | يُحدد الدالة التي يتم استدعاؤها عند تغيير الخاصية readyState |
readyState |
يُحفظ حالة XMLHttpRequest
|
الحالة |
يعيد رقم حالة الطلب
للحصول على قائمة كاملة، يرجى زيارة مرجع رسائل Http |
statusText | statusText |
يعود نص الحالة (مثل "OK" أو "Not Found").
يتم استدعاء دالة onreadystatechange كلما تغيرت حالة readyState. 4
و status هو 200
عندما تكون الاستجابة جاهزة:
مثال
function loadDoc() { تعريف xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function() { إذا (this.readyState == 4 && this.status == 200) { document.getElementById("demo").innerHTML = this.responseText; } }; xhttp.open("GET", "ajax_info.txt"); xhttp.send(); }
تم تفعيل الحدث onreadystatechange أربعة مرات (1-4)، وتم تغيير حالة readyState مرة واحدة في كل مرة.
- الصفحة السابقة مقدمة أكس جي إس
- الصفحة التالية طلبات AJAX