في "Pragmatic Ajax (موقع الويب Dynamic Static) A Web 2.0 Primer" ، رأيت بطريق الخطأ مقدمة إلى حالة ReadyStae. أشعر أن هذه المقدمة واقعية للغاية. الترجمة كما يلي:
0: (غير ضروري) لم يتم التذرع بعد.
1: (التحميل) تم استدعاء طريقة SEND () ، وطلب قيد التقدم.
2: (محمّل) تم الانتهاء من طريقة send () ، استجابة كاملة.
3: (التفاعلية) يتم تحليل الاستجابة.
4: (مكتمل) تم تحليل الاستجابة ، جاهزة للحصاد.
0 - (غير ضروري) لم يتم استدعاء طريقة send () بعد
1 - (تحميل) تم استدعاء طريقة send () ويتم إرسال الطلب
2 - (تم اكتمال التحميل) تم تنفيذ طريقة SEND () وتم استلام جميع محتوى الاستجابة
3 - (التفاعل) يتم تحليل محتوى الاستجابة
4 - (كامل) تم الانتهاء من تحليل محتوى الاستجابة ويمكن استدعاؤه على العميل
معظم الكتب الأخرى غامضة حول هذه الحالات الخمس في ReadyState. على سبيل المثال ، في "أسس Ajax" ، يتم سرد "اسم" الدولة ببساطة في الجدول 2-2 في الكتاب - حالة الطلب. القيم الخمس الممكنة هي 0 = غير غير ملائمة ، 1 = التحميل ، 2 = محمّل ، 3 = تفاعلي ، و 4 = كامل. يبدو أن تفاصيل هذه الحالات الخمس لم يتم ذكرها على الإطلاق في "Ajax (موقع الويب الديناميكي ثابت) في العمل". على الرغم من أن "Ajax المحترف" ليس مرضيًا ، إلا أنه لا يزال لديه مزايا:
هناك خمس قيم محتملة لـ ReadyState:
0 (غير مهتم): تم إنشاء الكائن ولكن لم يتم استدعاء طريقة Open ().
1 (التحميل): تم استدعاء طريقة Open () ولكن لم يتم إرسال الطلب.
2 (تم تحميله): تم إرسال الطلب.
3 (تفاعلي). تم استلام استجابة جزئية.
4 (كاملة): تم استلام جميع البيانات وتم إغلاق الاتصال.
هناك خمس قيم محتملة لـ ReadyState:
0 (غير ضروري): (XML (توحيد تقترب) تم إنشاء كائن httprequest) ، ولكن لم يتم استدعاء طريقة Open () بعد.
1 (تحميل): تم استدعاء طريقة Open () ، لكن لم يتم إرسال الطلب بعد.
2 (اكتمل التحميل): تم إرسال الطلب.
3 (التفاعل): يمكن استلام جزء من بيانات الاستجابة.
4 (كاملة): تم استلام جميع البيانات وتم إغلاق الاتصال.
في "فهم Ajax: باستخدام JavaScript لإنشاء تطبيقات إنترنت غنية" ، تم شرح الجدول التالي:
رمز حالة ReadyState
حالة XML (التقييس يقترب) كائن httprequest
(0) غير ضروري
تم إنشاء الكائن ولكن لم يتم تهيئته. (لم يتم استدعاء الطريقة المفتوحة.)
(XML (تقترب التقييس) تم إنشاء كائن httprequest) ، ولكن لم يتم تهيئته بعد (لم يتم استدعاء الطريقة المفتوحة بعد).
(1) التحميل
تم إنشاء الكائن ، ولكن لم يتم استدعاء طريقة الإرسال.
(XML (تقترب التقييس) تم إنشاء كائن httprequest) ، ولكن لم يتم استدعاء طريقة الإرسال بعد.
(2) تحميل
تم استدعاء طريقة الإرسال ، لكن الحالة والرؤوس غير متوفرة بعد.
تم استدعاء طريقة إرسال ، حالة (استجابة HTTP) ورأسها غير متوفرة.
(3) التفاعلية
التفاعل تم استلام بعض البيانات. إن استدعاء خصائص ResponseBody و ResponseText في هذه الحالة للحصول على نتائج جزئية سيعود خطأ ، لأن رؤوس الحالة والاستجابة غير متوفرة بالكامل.
تم استلام بعض البيانات. ومع ذلك ، إذا اتصلت بخصائص ResponseBody ومرضى في هذا الوقت للحصول على بعض النتائج ، فسيحدث خطأ لأن رؤوس الحالة والاستجابة غير متوفرة بالكامل.
(4) الانتهاء
تم استلام جميع البيانات ، وتتوفر البيانات الكاملة في خصائص ResponseBody و ResponseText.
تم استلام جميع البيانات ويمكن استخلاص البيانات الكاملة في خصائص ResponseBody و ResponseText.
وفقًا لإدخال الحالات الخمس لـ ReadyState في الكتب المذكورة أعلاه ، أعتقد أن "Ajax (موقع الويب الديناميكي الثابت) على الويب 2.0" في مكانه ، لأنه يذكر مشكلة تحليل البيانات المستلمة ، والتي لم يتم ذكرها في كتب أخرى. هذا هو السبب في وجود مرحلة "(3) تفاعل" كعملية تحويل ضرورية بين "(2) إكمال التحميل" و "(4) الانتهاء" ، أي ما هي مهمتها. باختصار ، أعتقد أن طريقة التفسير المثالية يجب أن تحدد هذه الحالات بدقة وسهلة الفهم في نمط التعبير عن "الحالة: المهمة (الهدف) + الأداء + الأداء (أو الخصائص). ملخص التجربة الحالي هو كما يلي:
وصف حالة ReadyState
(0) لم يتم تهيئتها
في هذه المرحلة ، أكد ما إذا كان XML (التقييس يقترب) يتم إنشاء كائن httprequest والاستعداد للاتصال بالطريقة المفتوحة () للاضطراب. تعني قيمة 0 أن الكائن موجود بالفعل ، وإلا فإن المتصفح سيبلغ عن خطأ - الكائن غير موجود.
(1) الحمل
في هذه المرحلة ، يتم تهيئة كائن HTTPrequest XML (التقييس أو القريب) ، أي أن الطريقة المفتوحة () تتم استدعاء إعداد حالة الكائن وفقًا للمعلمات (الطريقة ، URL ، TRUE). واتصل طريقة SEND () للبدء في إرسال طلب إلى الخادم. قيمة 1 تعني أنه يتم إرسال الطلب إلى الخادم.
(2) تم الانتهاء من التحميل
تتلقى هذه المرحلة بيانات الاستجابة من جانب الخادم. ولكن ما تم الحصول عليه هو البيانات الأصلية لاستجابة الخادم ولا يمكن استخدامها مباشرة على العميل. قيمة 2 تعني أنه تم تلقي بيانات الاستجابة الكاملة. والاستعداد للمرحلة التالية من تحليل البيانات.
(3) التفاعل
في هذه المرحلة ، يتم تحليل بيانات الاستجابة من جانب الخادم المستلمة. وهذا يعني ، وفقًا لنوع MIME الذي تم إرجاعه بواسطة رأس استجابة من جانب الخادم ، يتم تحويل البيانات إلى تنسيق يمكن الوصول إليه من خلال استجابة أو مسؤولية أو RESESESEXML (تقترب التوحيد وأقرب) ، والتحضير لمكالمات العميل. الحالة 3 تعني أن البيانات يتم تحليلها.
(4) الانتهاء
في هذه المرحلة ، تأكد من تحليل جميع البيانات في التنسيق المتاح للعميل وتم الانتهاء من التحليل. قيمة 4 تعني أن البيانات قد تم تحليلها. يمكن الحصول على البيانات من خلال الخصائص المقابلة لكائن HTTPRequest (تقترب التقييم وأقرب).
باختصار ، يجب أن تتضمن دورة حياة XML بأكملها (تقترب التوحيد أو أقرب) كائن httprequest المراحل التالية:
إنشاء - تهيئة الطلب - إرسال طلب - استلام البيانات - تحليل البيانات - أكمل
في تطبيقات محددة ، يمكن أن يوضح توضيح معنى الحالات الخمس لـ ReadyState (XML (تقترب التوحيد) والمراحل المختلفة لدورة حياة كائن httprequest) القضاء على لغز جواس (موقع الويب الثابت) (وراءه إلى حد كبير ، هو إما أن يكون هناك طريقة غامضة لخلق إحساس بالغموض ؛ أو "جعل الناس واضحين". الإحباط في تعلم وتعزيز الثقة بالنفس.
على سبيل المثال ، باتباع المثال:
نسخة الكود كما يلي:
// صفيف إعلان
var states = ["التهيئة ..." ،
"تهيئة الطلب ... ناجح!
إرسال طلب ... "،
"نجاح!
تلقي البيانات ... "،
"ينهي!
تحليل البيانات ... "،
"ينهي!
"] ؛
// قصاصة الكود الداخلي لوظيفة رد الاتصال
إذا اقترب (XML (توحيد) http.readyState == 4)
{
var span = document.createElement ("span") ؛
span.innerhtml = states [xml (توحيد تقترب) http.readyState] ؛
document.body.appendchild (span) ؛
إذا اقترب (XML (توحيد) http.status == 200)
{
var xml (تقترب التقييس) doc = xml (التقييس يقترب) http.responsexml (تقترب التقييس) ؛
// رمز آخر
}
// لا تنس أن تدمرها لمنع تسرب الذاكرة
XML (توحيد يقترب) http = null ؛
}آخر{
var span = document.createElement ("span") ؛
span.innerhtml = states [xml (توحيد تقترب) http.readyState] ؛
document.body.appendchild (span) ؛
} النتائج كما يلي:
تهيئة الطلب ... ناجح!
إرسال طلب ... ناجح!
تلقي البيانات ... مكتملة!
تحليل البيانات ... الانتهاء!
من السهل أن نفهم ما الذي يقوم به XML (التقييس أكثر) لذلك ، من السهل أن يكون لديك فهم بسيط وواضح حقًا للجزء الأساسي من Ajax (موقع الويب الديناميكي ثابت).