سؤال

كيفية استدعاء دول 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.")}
});

يمكنك رؤية المستندات الخاصة بالمعلمات التي يمكنك الوصول إليها بالضبط في وظائف رد الاتصال.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top