Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Ajax, проблемы в IE. (https://javascript.ru/forum/jquery/29631-ajax-problemy-v-ie.html)

wUI 05.07.2012 15:22

Ajax, проблемы в IE.
 
Всем доброго времени суток!
Наверное самая избитая тема: IE и Ajax.:)
Есть элемент кода:

function onDataReceived(w){
...//обработка получаемых данных
}

function requestData() {
                $.ajax({
                    async: false,
                    url: './engine/modules/getData/lineChart.php',
                    dataType: 'Json',
                    success: onDataReceived
                });
            }
requestData();


При первоночальной загрузке странице IE отрабатывает как нужно, подтягивает данные аяксом. Но при необходимости повторного вызова requestData(); - тишина. В Опере, FF повторный вызов послушно отрабатывает и подтягивает свежие данные.

Помогите советом.=)

update_1: дебагом выяснил, что повторный вызов все таки вызывает функцию onDataReceived(), но вот данные повторно перебирать отказывается IE.

cmd 06.07.2012 04:31

Я не спец, но скажу, что писал бы иначе.
1. используя анонимную функцию в success
2. а что за параметр w? почему не передаете?

function onDataReceived(w){
...//обработка получаемых данных
}

function requestData() 
{

$.ajax({
	async: false,
	url: './engine/modules/getData/lineChart.php',
	dataType: 'Json',
	success: function(data){
		onDataReceived(data.somevalue);
	}
});

}

requestData();

Deff 06.07.2012 04:38

success: function(data){
alert( "Data received: " + data );
}

wUI 06.07.2012 06:08

cmd и Deff, пробовал использовать анонимную функцию, результат как и пржде в Опере и FF все работает, а вот IE загружает и отрабатывает только при старте страницы, но при повторном вызове молчит.
DebugBar для IE выдает такую странную строку в timing по выполнению повторного запроса: "All request retrieved from cache (no server request)."
Думаю следует в заголовке php файла, отправлять не кешировать страницу. Ща попробую:)

wUI 06.07.2012 06:15

Мои подозрения по поводу кеширования оказались верны:)

Добавил в начале документа php (отвечающего за получение данных) эти заголовки:
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");


cmd и Deff, спасибо за помощь!

Deff 06.07.2012 06:26

wUI,
Гы - Вы хоть бы пердупредили, что повторный запрос той же страницы

стандатрный выход такой:
$.ajax({ 
	                    async: false, 
	                    url: './engine/modules/getData/lineChart.php?'+Math.random(),
	    dataType: 'Json',
	    success: function(data){

wUI 06.07.2012 06:41

Deff,
Выглядит лаконичней моего решения, проверю! спасибо. :)

cmd 06.07.2012 14:54

Интересно, а так сработало бы?
$.ajax({ 
	    async: false, 
	    cache: false,
	    dataType: 'Json',
...


Часовой пояс GMT +3, время: 18:23.