Arik
Новичок
Ajax + возвращение данных после переадресации
Проблема в следующем. Есть форма с элементами которой можно осуществлять некоторые действия. Манипуляции происходят без перезагрузки страницы с помощью Ajax. После отправления запроса, со стороны сервера мы видем следующую картину:
1. Запись в БД
2. Переадресация
3. Вывод результата с актуальной таблицей
Проблема возникла именно из-за переадресации и только с одним браузером - Opera.
Вот JS код:
var req;
var reqTimeout;
var tag;
Формируем запрос
function ajax(url,tag_id) {
url = url + "&ajax=on";
tag=tag_id;
// для "родного" XMLHttpRequest
if (window.XMLHttpRequest) {
req = new XMLHttpRequest();
req.onreadystatechange = req_change;
req.open("GET", url, true);
req.send(null);
// для версии с ActiveX
} else if (window.ActiveXObject) {
req = new ActiveXObject("Microsoft.XMLHTTP");
if (req) {
req.onreadystatechange = req_change;
req.open("GET", url, true);
req.send();
}
}
if (req)
reqTimeout = setTimeout( function(){ req.abort(); handle_error("Timeout") }, 20000);
}
// Получаем результат
function req_change() {
if (req.readyState == 4) {
clearTimeout(reqTimeout);
if (req.status == 200) {
make_result(req.responseText);
req=null;
}
else if (req.status == 302 ) {
req=null;
ajax(document.location,tag); // Изврат специально для оперы - хреново
}
else {
handle_error(req.statusText);
req=null;
}
}
}
make_result - обрабатывает результат, но это уже не важно
В IE и FF после переадресации (на тот же домен, естественно) выдается статус 200 и результат, в Opera - 302 и отсутсвие результата. Пришлось временно организовать повторный запрос, так как после обработки попадаем на ту же страницу. Хотелось бы понять, как можно получить данные после переадресации для Opera или хотя бы получить реальный адрес, сформированый после переадресации, чтобы сделать по нему повторный запрос.
Проблема в следующем. Есть форма с элементами которой можно осуществлять некоторые действия. Манипуляции происходят без перезагрузки страницы с помощью Ajax. После отправления запроса, со стороны сервера мы видем следующую картину:
1. Запись в БД
2. Переадресация
3. Вывод результата с актуальной таблицей
Проблема возникла именно из-за переадресации и только с одним браузером - Opera.
Вот JS код:
var req;
var reqTimeout;
var tag;
Формируем запрос
function ajax(url,tag_id) {
url = url + "&ajax=on";
tag=tag_id;
// для "родного" XMLHttpRequest
if (window.XMLHttpRequest) {
req = new XMLHttpRequest();
req.onreadystatechange = req_change;
req.open("GET", url, true);
req.send(null);
// для версии с ActiveX
} else if (window.ActiveXObject) {
req = new ActiveXObject("Microsoft.XMLHTTP");
if (req) {
req.onreadystatechange = req_change;
req.open("GET", url, true);
req.send();
}
}
if (req)
reqTimeout = setTimeout( function(){ req.abort(); handle_error("Timeout") }, 20000);
}
// Получаем результат
function req_change() {
if (req.readyState == 4) {
clearTimeout(reqTimeout);
if (req.status == 200) {
make_result(req.responseText);
req=null;
}
else if (req.status == 302 ) {
req=null;
ajax(document.location,tag); // Изврат специально для оперы - хреново
}
else {
handle_error(req.statusText);
req=null;
}
}
}
make_result - обрабатывает результат, но это уже не важно
В IE и FF после переадресации (на тот же домен, естественно) выдается статус 200 и результат, в Opera - 302 и отсутсвие результата. Пришлось временно организовать повторный запрос, так как после обработки попадаем на ту же страницу. Хотелось бы понять, как можно получить данные после переадресации для Opera или хотя бы получить реальный адрес, сформированый после переадресации, чтобы сделать по нему повторный запрос.