PDA

View Full Version : استفاده از ajax در هنگام load صفحات سنگین



b581102
سه شنبه 20 فروردین 1387, 12:41 عصر
چه جوری می شه وقتی صفحه ای که بارگذاریش زمان بره ، روی صفحه پیغامی مثل " در حال بارگذاری صفحه ... لطفا منتظر بمانید" نمایش داده بشه ؟

raravaice
سه شنبه 20 فروردین 1387, 12:50 عصر
سلام

شما دقیقا بعد از تگ body صفحه و به عنوان اولین تگ یه div بزار و متن یا عکس رو بزار توش و توی رویداد onload تگ body اون div رو display:none کن.

این مورد با ajax و asp.net مرتبط نیست سئوالت رو از این به بعد تو بخش مربوط بپرس.

موفق باشید

b581102
سه شنبه 20 فروردین 1387, 12:55 عصر
اگه از MasterPage استفاده کنم باید در MasterPage این کار رو انجام بدم ؟

raravaice
سه شنبه 20 فروردین 1387, 13:02 عصر
بله. !

b581102
سه شنبه 20 فروردین 1387, 13:06 عصر
طبق راهنمایی شما این کار رو کردم ولی جواب نمی ده :



<bodyonload="document.layers[wait].display = none;">
<divid="wait">
لطفا صبر کنید ...
</div>
<formid="form1"runat="server"method="post">
<divalign="center">
.
.
.

raravaice
سه شنبه 20 فروردین 1387, 13:10 عصر
document.getElementById('wait').style.display='non e';


موفق باشید

b581102
سه شنبه 20 فروردین 1387, 13:14 عصر
برای اینکه تست کنم ، تو Page_Load این کد رو می ذارم :
System.Threading.Thread.Sleep(10000);

ولی باز هم اول مکث می کنه ، بعد اون متن رو نشون می ده .

violet
سه شنبه 20 فروردین 1387, 13:15 عصر
دوست عزیز شاید این کمک کنه:



<html>
<head></head>
<body>
<divid="Preloader">
Loading...
</div>
.
.
.
.
.
Content
.
.
.
.
.
<scripttype="text/javascript">
if(document.getElementById){document.getElementByI d('Preloader').style.display='none';}
</script>
</body>
</html>

raravaice
سه شنبه 20 فروردین 1387, 13:21 عصر
برای اینکه تست کنم ، تو Page_Load این کد رو می ذارم :
System.Threading.Thread.Sleep(10000);

شما سرور رو داری معطل میکنی خوب معلومه که درست کار نمیکنه از زمانی که تگ wait شما تو صفحه لود بشه تا زمانی که کلا html لود بشه متن شما نمایش داده میشه خوب شما حالا بیا thread.sleep رو 1 ساعت کن یا 1 ثانیه فرقی نداره چون بعد از این زمان تازه دیتا از سرور ارسال میشه.

موفق باشید

b581102
سه شنبه 20 فروردین 1387, 13:59 عصر
منم منظورم همینه ! یعنی می خوام برای معطلی پردازش هایی که سمت سرور انجام می شه ، به کاربر پیغام بدم ، نه لود شدن image و ...

raravaice
سه شنبه 20 فروردین 1387, 14:04 عصر
منم منظورم همینه ! یعنی می خوام برای معطلی پردازش هایی که سمت سرور انجام می شه ، به کاربر پیغام بدم ، نه لود شدن image و ...

در این صورت کار خیلی سخت تره و همچنین کارایی صفحه شما برای موتور های جستجو از بین میره شما باید توی صفحه و بعد از تگ body یه div بزاری و بعد از لود صفحه مذکور درخواست ajax رو صادر کنی و اطلاعات صفحه رو از بانک اطلاعاتی یا هرجای دیگه بریزی توی div موجود و در این مابین میتونی تا زمانی که درخواست ajax تکمیل نشده یعنی :



xmlHttp.readyState != 4 || xmlHttp.readyState != 'complete'


متن انتظار رو نشون بدی و وقتی تکمیل شد اونو از بین ببری البته اساتید امر از ashx هم استفاده میکنن برای کارایی بیشتر ولی اطلاعات بنده در زمینه ashx ناچیز هست.

موفق باشید

b581102
سه شنبه 20 فروردین 1387, 14:30 عصر
و همچنین کارایی صفحه شما برای موتور های جستجو از بین میره


چرا کارایی از بین می ره ؟

raravaice
سه شنبه 20 فروردین 1387, 14:52 عصر
سلام

چون Ajax و جاوا اسکریپت فقط برای یک مرورگر قابل اجراست و موتور های جستجو با در خواستهای مبتنی بر HTTP صفحات شما رو مورد جستجو قرار میدن و سورسهای موجود در صفحه رو در مرحله اول فیلتر سازی پاک میکنن پس در این صورت اطلاعاتی باقی نمیمونه که بخوان ثبت کنن چو اطلاعات شما رو ajax با javascript داره درخواست میده.

موفق باشید

b581102
سه شنبه 20 فروردین 1387, 15:01 عصر
از راهنمایی تون متشکرم .