عند استخدام AJAX للحصول على تفاعل المعلومات ، إذا كانت المعلومات التي يتم إرجاعها بواسطة الخادم كبيرة نسبيًا ، فستكون شاشة البث أكثر ودية مقارنةً بالشاشة الموحدة بعد اكتمال الإرسال.
تنفيذ تدفق
المبدأ هو تعيين مؤقت ، وعرض حالة كائن Ajax بانتظام وتحديث المحتوى. إذا تم الانتهاء من الإرسال ، فسيتم إلغاء الموقت.
نسخة الكود كما يلي:
وظيفة ajax_stream (url ، البيانات ، العنصر) {
var xmlhttp = null ؛
if (window.xmlhttprequest)
{// code for IE7 ، Firefox ، Opera ، etc.
xmlHttp = new xmlhttprequest () ؛
}
آخر إذا (window.activexobject)
{// code for ie6 ، ie5
XMLHTTP = New ActivexObject ("Microsoft.xmlhttp") ؛
}
إذا (xmlhttp == null)
{
التنبيه ("متصفحك لا يدعم XMLHTTP.") ؛
element.val ('لا يدعم متصفحك XMLHTTP. انقر على رابط السجل لمراقبة الإجراء. ") ؛
العودة 0 ؛
}
var xhr = xmlhttp ؛
XHR.Open ('post' ، url ، true) ؛
// إذا كنت بحاجة إلى بيانات نشر مثل نماذج HTML ، فاستخدم SetRequestHeader () لإضافة رؤوس HTTP. ثم حدد البيانات التي تريد إرسالها في طريقة send ():
XHR.SetRequestHeader ("نوع المحتوى" ، "التطبيق/X-WWW-Form-urlencoded") ؛
XHR.SEND (البيانات) ؛
var timer ؛
TIMER = window.setInterval (function () {
if (xhr.readyState == xmlhttprequest.done) {
window.cleartimeout (مؤقت) ؛
}
element.val (XHR.Responsetext) ؛
} ، 1000) ؛
}
بعد تحويل البيانات
نظرًا لأن الإرسال في التطبيقات القياسية لا يمكن إلا أن يقبل الأنواع التالية من المدخلات ، فمن الضروري تحويل كائن البيانات ليتم نقله إلى تنسيق سلسلة أو formdata مسبقًا ، والذي ليس مناسبًا مثل jQuery. ومع ذلك ، من غير المعروف كيف يمكن لـ jQuery تنفيذ استجابات الأحداث في منتصف الإرسال ، لذلك لا يمكن استخدامها ، ويمكنك تحويل جميع الكائنات إلى JSON.
نسخة الكود كما يلي:
باطلة إرسال () ؛
إرسال باطل (بيانات ArrayBuffer) ؛
إرسال باطل (بيانات blob) ؛
إرسال باطل (بيانات المستند) ؛
إرسال باطل (domstring؟ البيانات) ؛
إرسال باطل (بيانات formData) ؛
فيما يلي رمز التحويل. إذا كان المتصفح يدعم FormData ، فسيتم تحويله ، وإلا فإنه سيتم تحويله إلى سلسلة.
نسخة الكود كما يلي:
دالة ajax_generate_data (jsobj) {
var i ؛
if (window.formdata) {
var data = new FormData () ؛
لأني في jsobj {
data.append (i ، jsobj [i]) ؛
}
} آخر {
var data = '' ؛
var datas = [] ؛
لأني في jsobj {
// بالنسبة للقيم بحيث لا يكسر التنسيق الممكن والمحتوى في الأوتار
VAR VALUE = ENCODEURICOMPONTING (JSOBJ [I]) ؛
datas.append (i + '=' + value) ؛
}
البيانات = datas.join ('&')
}
console.log (البيانات) ؛
إرجاع البيانات ؛
}