2010-05-20 27 views
5

Tôi có mã sau đây là trang .net mvc aspx ...Thông báo chặn chặn JQuery BlockUI không hiển thị ngay lập tức

//////////////////////

$ .blockUI ({message: '

Đang xử lý ... Vui lòng đợi

'});

var registerOk = registerNewUser(); var createUserSubscriptionOK = createUserSubscription();

$ .unblockUI();

\\\\\\\\\\\\

nhắn Khối không hiển thị cho đến khi chỉ trong khoảng thời gian mà các chức năng thứ 2 kết thúc. Cả hai chức năng thu thập dữ liệu biểu mẫu sau đó thực hiện các cuộc gọi asynch đến db.

Tôi cần được thông báo để hiển thị ngay lập tức, có cả chức năng lửa, sau đó một lần cả hai đều hoàn tất, ui được giải toả ...

Làm thế nào để làm điều này?

Cảm ơn mọi phản hồi.

Trả lời

8

Xin chào Tôi không có câu trả lời cho điều này, nhưng tôi chỉ muốn báo cáo rằng tôi thấy cùng một vấn đề trong firefox 3.5.9.

Tôi đang cố gắng sử dụng blockUI để hiển thị thông báo chờ bằng gif động trong khi máy chủ xử lý thông tin được gửi qua biểu mẫu. .

Bên trong $ ("# dạng") nộp (function() { đầu tiên tôi gọi blockUI: $ .blockUI ({nhắn: -image ở đây, xử lý yêu cầu của bạn, vui lòng đợi ...'});

Sau đó, tôi chuẩn bị dữ liệu được gửi đến máy chủ và gửi cho họ với một cuộc gọi đồng bộ ajax: $ .ajax ({ loại: "POST", url: '/ submitForm /' + typeName, dữ liệu: postdata + "&" + sData, bộ nhớ cache: sai, không đồng bộ: false });

và cuối cùng tôi mở khóa $ .unblockUI();

Tôi nhận thấy rằng nó hoạt động với Konqueror (trong KDE4), nó cho thấy cửa sổ chờ với gif động làm tối nền và nó biến mất ở cuối.

Vì vậy, sự cố có thể liên quan đến firefox hoặc có thể một số cấu hình sai không ảnh hưởng đến trình duyệt cụ thể đó.

Tôi hy vọng thông tin này hữu ích cho một số chuyên gia trong việc tìm ra vấn đề thực tế là gì.

Tôi cũng sẽ biết ơn bất kỳ phản hồi nào.

EDIT:

Xin chào,

Tôi không biết nếu điều này vẫn còn có liên quan, nhưng cuối cùng tôi quản lý để làm cho nó làm việc.Vấn đề là tôi đã thực hiện một cuộc gọi đồng bộ với ajax (bit "async: false" trong cuộc gọi submitForm). BlockUI được cho là tạo một cuộc gọi không đồng bộ như thể nó đã được đồng bộ, tức là chặn giao diện. Nếu cuộc gọi đã đồng bộ thì không cần chặn ui, vì đó là hành vi bình thường của các cuộc gọi đồng bộ!

Vì vậy, đối với tôi, chỉ cần xóa phần "async: false" đã làm cho nó hoạt động.

Tôi hy vọng điều này sẽ hữu ích.

+0

đó đã làm các trick cho tôi :) –

6

Cố gắng loại bỏ những hành vi async của blockUI bằng cách thiết lập fadeIn để 0:

$.blockUI({ message: $('#domMessage'), fadeIn: 0 }); 
+0

này cố định vấn đề của tôi. Cảm ơn bạn! – Angela

Các vấn đề liên quan