سلام
بازم نتونستید منظورتون رو خوب برسونید! بخش اول پست آخر شما، کاملا گفته هاتون رو در پستهای قبلی نقض میکنه. بزارید من یک به یک به پستهای شما جواب بدم، شاید اینطوری به نتیجه برسیم.
سلام دوستان من تگ div در صفحه دارم که توی اون با یسری دستورات پی اچ پی یسری اطلاعات رو شرط چاپ میکنه
اطلاعات رو دیتا بیس دائما در حال تغیره و ممکنه یه سری از مقادیر مجوز چاپ رو پیدا کنند و یسری دیگه مجوزشون لغو شه
آیا تابعی برای رفرش کردن تگ Div وجود داره یا فقط همون روش های آجاکسی ارسال و دریافت مقادیر به یه صفحه دیگه تنها راه ؟
چون رفرش کردن تگ دی آی وی احتمالا سرعت بیشتری نسبت به اجرای یه تابع آجاکس ارسال و دریافت داره و فشار کمتری میاره ...
اول به این سوال من شما جواب بدید: چه اطلاعاتی
دقیق باید در تگ div قرار داده بشه و از کجا؟
اگر قراره این اطلاعات از سرور گرفته بشه، شما 3 تا راه دارید که می تونید از Ajax, JSONP و یا راه آخر از iframe ها استفاده کنید.
منظورتون اینجا از فشاری که وارد میشه چیه؟ شما چه صفحه ای رو با Ajax بارگذاری می کنید؟ احیانا تو اون صفحه ای که قرار با Ajax لود بشه، اطلاعات اضافه و بدرد نخوری که توی div نیاز نیست وجود داشته باشه هست یا نه؟
شما به این سوالات جواب بدید، چون برای پیشبردن تاپیک نیاز به دونستنشون هست.
بله دقیقا منظور منم اینه که نیازی به برقراری ارتباط با یه فایل خارجی یا اسکریپ خارجی نباشه البته پس از تحقیق که انجام دادم به همین فرمایش دوستمون که فرمودند هیچ راهی وجود نداره رسیدم
توجه داشته باشد که اگه مایکر سافت یه همچین تابعی رو توی جاوا قرار میداد کلا سبک برنامه نویس آجاکس تغیر میکرد و خیلی ساده تر میشد
شاید در آینده همچین تابعی رو توی جاوا ارائه بدن
توی این گفته هاتون هم تناقض وجود داره.
اگر قراره با هیچ فایل خارجی و سرور ارتباط نداشته باشه، پس چطور باید
اطلاعات بروز شده رو نمایش بده؟ مگه شما نمی گید این اطلاعات دائما در حال تغییره؟ خب اگر اینطور باشه پس
باید با فایلها و داده های که اطلاعاتشون تغییر پیدا کرده، ارتباط برقرار کرد و داده ها رو واکشی کنیم.
گیریم که مایکروسافت یه همچین تابعی رو قرار می داد، ولی اون باید از کجا می فهمید که ما یا شما چه چیزی رو می خوایم نمایش بدیم؟ بالاخره باید براش مشخص کنیم که از کجا و به چی نیاز داریم؟
ببینید منظور کلی من اینه که یک صفحه html که شامل کلی تگ هست و هریک از تگ ها محتوی یکسری اطلاعات است
ما بتونیم توسط خود html یا جاوا محتوای یک تگ div رو set و unset کنیم
مثلا همونطور که ما با کلیک بروی یک دکمه submit محتوای یک فرم رو sen میکنیم .
یا بزار یه مثال دیگه بزنم مثلا یه منوی drop down یا کشوی وقتی که با یه ایونت مثل onmouseover نمایان میشه .. .
ببینید وقتی ما یه صفحه html استاتیک رو رفرش میکنیم اون صفحه حتی اگر با صفحات دیگه ای هم ارتباطی نداشته باشه در صورتی که تغیراتی در سورس اون بوجود اومده باشه اون تغیرات رو نمایان میکنه
اصلا بیخیال من راجب این موضوع حتی از جی کوری هم نگذشتم و تو فروم Jqury هم زیرو رو کردم اونجا هم به همین پاسخ رسیدم
راجب آژاکس هم یه تابع اختصاصی نوشتم. ولی مشکلی که من با آژاکس دارم فشاری هست که به تبع query های پی در پی به سرور وارد میشه .
این مواردی که شما گفتید رو دوستمون farik هم جواب دادن که چطور اینکار رو انجام بدید، با استفاده از DOM.
بزارید من با یک مثال به شما نشون بدم که چطور می تونیم، محتوای یک div رو set و یا unset کنیم:
کد:
var div = document.getElementById('myDiv');
// set value & save default value
div.innerHTML += '... new content added';
// set
div.innerHTML = 'new content replaced';
// unset
div.innerHTML = ''; // all contents, is removed.
متوجه شدید که ماچقدر ساده اینکار رو انجام دادیم. اگر اطلاعات استاتیک و تغییر نیافته است، از این راه بدون شک می تونید استفاده کنید. شما با Ajax هم همین کار رو انجام میدید، منتها داده های Ajax از سرور می یاد:
کد:
var staticData = 'static data...';
var dynamicData = ajax.get(url, param); // all data recieved from server.
div.innerHTML = staticData;
div.innerHTML = dynamicData;
ببخشید یک سوال:
ببینید وقتی ما یه صفحه html استاتیک رو رفرش میکنیم اون صفحه حتی اگر با صفحات دیگه ای هم ارتباطی نداشته باشه در صورتی که تغیراتی در سورس اون بوجود اومده باشه اون تغیرات رو نمایان میکنه
این یعنی چی؟ من نتونستم این جمله رو متوجه بشم!
در مورد کوئری های پی در پی هم می تونید، از cache استفاده کنید. به اینصورت که تا زمانی که اطلاعات جدیدی وارد نشده، کوئری ها بیخود اجرا نشن. در ضمن مگه چند تا کوئری همزمان اجرا میشن که شما نگران فشار به سرور هستید؟
برای به جواب رسیدن این تاپیک همه ی اینهای که گفتم نیازه:دی
پ.و: div رو دیو یا همون "دی آی وی" تلفظ کنید، دایو درست نیست.
موفق باشید.