2011-06-14 3 views
1

ОБНОВЛЕНО: Найден ответ. Не могу представить свой собственный ответ еще 7 часов ... См. Комментарии.Остановить IE от кеширования iframe, открытого через jQuery модальный диалог

Я открываю диалоговое окно следующим образом:

url = 'edit/MyPage.aspx?appid=3&value=4&' + date.getTime(); 
$('#modalIFrame').attr('src', url); 
$('#modalDiv').dialog('open'); 

Функция Iframe имеет форму с несколькими полями (флажки, выпадающие, прокручиваемыми). В Chrome все работает безупречно. В IE он кэширует очень настойчиво и досадно. Даже shift + refresh не помогает. Поэтому, если я открою диалог, внеся изменения, нажмите «Отправить», а затем обновите страницу, все данные выглядят правильно. Однако, когда я нажимаю кнопку «Редактировать», чтобы открыть диалог, это предыдущие данные (данные вытягиваются с использованием вызова ajax для службы WCF). Я даже ждал пару часов для истечения моего сеанса, не повезло.

Как вы можете видеть выше, я попробовал трюк, который я нашел здесь, чтобы обмануть IE, подумав, что это новая страница. Это не работает. Я также добавил следующий код в Page_Load страницы в IFRAME:

Response.Cache.SetCacheability(HttpCacheability.NoCache) 

и следующие мета-тегов в HTML:

<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE"> 
<META HTTP-EQUIV="EXPIRES" CONTENT="0"> 

Я полностью потерял здесь, какие идеи были бы оценили.

+0

Хорошо, так что я не могу ответить на мой собственный вопрос, но ... –

+0

Хорошо, я обнаружил, что это была служба WCF, которая кэшируются в IE. Кажется странным для меня, но я добавил временную метку для вызова ajax, и теперь это работает! var date = new Date(); данные: {"appid": appid, "serverid": serverid, "timestamp": date.getTime()}, –

ответ

1

Хорошо, что я обнаружил, что служба WCF была кеширована в IE (для меня это не имеет смысла, но что бы там ни было). Я добавил временную метку для вызова ajax, и теперь он работает!

data: { "appid": appid, "serverid": serverid, "timestamp": date.getTime() }, 
+1

Я хотел бы знать, почему мы должны «взломать» этот путь ... Я тоже получал это проблема - и, добавив отметку времени, я вижу, что она заставляет ее идти, поскольку это не тот же вызов, но почему он кэшируется и есть ли правильный способ сказать это не так? – farcrats

+0

Жаль, что я мог бы помочь, но я пошел дальше, и это не привлекло большого внимания. –