jQuery $ .ajax و ReadyStates
-
29-09-2019 - |
سؤال
كيفية استدعاء دول Ajax Ready على jQuery $.ajax
طريقة؟
المحلول
$.ajax()
إرجاع كائن xmlhttprequest ، لذلك إذا كنت حقًا تريد الوصول إليها مع تغير الحالة ، يمكنك القيام بذلك:
var xhr = $.ajax({ ... });
xhr.onreadystatechange = function() { alert(xhr.readyState); };
ولكن يجب أن تكون عمليات الاتصال المدمجة هي كل ما تحتاجه لمعظم الاستخدامات ، وخاصة success
و complete
.
للقيام بالأشياء قبل حرائق الطلب ، استخدم beforeSend
, ، أو بشكل أكثر ملاءمة لمعظم الحالات ، .ajaxStart()
و .ajaxStop()
الأحداث ... على سبيل المثال لإظهار رسالة تحميل كلما استمر أي نشاط AJAX.
نصائح أخرى
الطريقة ، تم اختبارها مع jQuery 2.0.2:
$.ajax({
beforeSend: function (jqXHR, settings) {
var self = this;
var xhr = settings.xhr;
settings.xhr = function () {
var output = xhr();
output.onreadystatechange = function () {
if (typeof(self.readyStateChanged) == "function") {
self.readyStateChanged(this);
}
};
return output;
};
},
readyStateChanged: function (xhr) {
if (xhr.readyState == 1) {
/* Connected! Do something */
}
},
url: "..."
});
في الأساس ، ما احتاجه كان رد الاتصال بعد readyState
يصبح 1
(متصل) ، والتي ، في حالتي ، كانت مفيدة عند تنفيذ الإخطارات الطويلة "دفع" مع jQuery.
يجب أن تكون قادرًا على الحصول على كل ما تحتاجه من خلال إعداد عمليات الاسترجاعات ل success
, error
, ، و complete
الخيارات في الكائن الذي تنقله إلى ajax()
طريقة. ألق نظرة على الوثائق:
http://api.jquery.com/jquery.ajax/
ببساطة إنه يعمل بهذا الشكل:
$.ajax({
url: 'ajax/test.html',
success: function(data) {
alert('Load was performed.');
},
error: function() {alert("error occurred.")},
complete: function() {alert("ajax complete.")}
});
يمكنك رؤية المستندات الخاصة بالمعلمات التي يمكنك الوصول إليها بالضبط في وظائف رد الاتصال.