آژانس هواپیمایی
pop up

مشکل ای جکس با اینترنت اکسپلورر

شروع موضوع توسط byvafa ‏19 اکتبر 2007 در انجمن PHP

  1. byvafa

    byvafa کاربر تازه وارد

    تاریخ عضویت:
    ‏7 آپریل 2005
    نوشته ها:
    175
    تشکر شده:
    0
    چند وقتی یه مشکل با ای جکس تو اینترنت اکسپلورر دارم که نمی دونم چه طوری حلش کنم ...
    ببینید اینجا من یه صفحه php دارم که یه عدد رندوم بهمون میده ( به اسم random.php) :
    PHP:
    <?php
    $random 
    rand(11000);
    echo 
    $random;
    ?>
    و یه فایل html که با یه چند تا خط ساده به روش ای جکس اطلاعات ( همون random.php رو چاپ می کنه ) :
    HTML:
    <html>
    <head>
    <title>test ajax</title>
    <script language="javascript">
    function rand () {
    	if (window.ActiveXObject) {
    		xml = new ActiveXObject ('Microsoft.XMLHTTP');
    	} else {
    		xml = new XMLHttpRequest();
    	}
    	xml.open('GET', 'random.php', true);
    	xml.send(null);
    	xml.onreadystatechange = function () {
    		if (xml.readyState == 4 && xml.status == 200) {
    			document.getElementById('test').innerHTML = 
    
    xml.responseText;
    		}
    	}
    }
    </script>
    </head>
    <body>
    <div id="test"></div>
    <script>rand();</script>
    <br>
    <br>
    <input type="button" value="random number" onClick="rand()">
    </body>
    </html>
    توی IE فقط یکبار بهمون عدد رندوم رو می ده که برای دفعه بعد حتی اگه صفحه رو رفرش هم بکنیم جواب نمیده ولی با firefox مشکلی نداره ...

    ممنون می شم فقط بگذارید ...:)
     
  2. alik

    alik کاربر قدیمی پرشین تولز

    تاریخ عضویت:
    ‏23 سپتامبر 2005
    نوشته ها:
    2,146
    تشکر شده:
    1,219
    اگر اشتباه نکنم حالا شما امتحان کن شاید به خاطر کد 200 باشه :) یکبار که در ie این کد را اجرا کنید وضعیت صفحه دریافتی 200 هست ولی برای بار دوم به بعد وضعیت صفحه فکر کنم اکر درست یادم باشه 304 میشه ...

    این شرط را حذف کنید و مجدد امتحان کنید فکر کنم درست میشه :)
     
  3. miladmovie

    miladmovie مدیر بازنشسته کاربر فعال

    تاریخ عضویت:
    ‏25 دسامبر 2002
    نوشته ها:
    1,936
    تشکر شده:
    2
    این هم به کد PHP اضافه کن شاید فرجی بشه
    PHP:
    <?php
    header
    ("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
    header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past
    ?> 
     
  4. firebird

    firebird Registered User

    تاریخ عضویت:
    ‏2 جولای 2005
    نوشته ها:
    1,424
    تشکر شده:
    9
    کد:
    xml.open('GET', 'random.php?t=' + date.getTime(), true);
     
  5. byvafa

    byvafa کاربر تازه وارد

    تاریخ عضویت:
    ‏7 آپریل 2005
    نوشته ها:
    175
    تشکر شده:
    0
    آقا علی اینجوری نشد .... علی جان این کد داخل فایرفکس به خوبی کار میکنه با این حال فکر می کنی که به 304 تغییر میکنه ؟

    خیلی خوشحالم ... :lol: شد ...
    خیلی ممنون .. البته کد شما رو قبول نکرد من به این تغییر دادم شد ... :

    کد:
    	a = new Date ();
    	xml.open('GET', 'random.php?t=' + a.getTime(), true);
    در واقع همون کار شما رو کردم ولی به خاطر پیام خطایی می داد تاریخ رو تو یه متغیر بهش دادم ...
    راستی این راه حلش اینه که آدرس صفحاتی که لود میشن باید با هم فرق کنن ؟

    آقا میلاد از شما هم ممنون ... با کد شما هم درست شد ...
    اما میشه توضیح بدید چکار کردید ... من این هدر ها رو هیچ فقط کامل نخوندم ... صفحه رو نمی زارید کش شه درسته ؟

    از همه دوستان ممنون
     
  6. firebird

    firebird Registered User

    تاریخ عضویت:
    ‏2 جولای 2005
    نوشته ها:
    1,424
    تشکر شده:
    9
    من اون كد رو از حفظ نوشتم. الان كه نگاه ميكنم ميبينم حق با شماست و درستش اونيه كه شما نوشتي. در مورد راه حل هم URL رو كه تغيير بدي هيچ وقت از cache نميخونه.
     
  7. boxilink
  8. miladmovie

    miladmovie مدیر بازنشسته کاربر فعال

    تاریخ عضویت:
    ‏25 دسامبر 2002
    نوشته ها:
    1,936
    تشکر شده:
    2
    پس آلان وقت مناسبی هست که بخونیدش header :p;)
     
  9. byvafa

    byvafa کاربر تازه وارد

    تاریخ عضویت:
    ‏7 آپریل 2005
    نوشته ها:
    175
    تشکر شده:
    0
    خیلی ممنون از راهنماییتون ..:happy:

    همین حالا شروع کردم ... ممنون:hmm: