Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Opera не получает AJAX ответа при использовании Redirect
Форумы портала PHP.SU » Клиентская разработка » JavaScript & VBScript » Opera не получает AJAX ответа при использовании Redirect

Страниц (1): [1]
 

1. SergeantPEPPER - 28 Февраля, 2008 - 18:35:53 - перейти к сообщению
И снова здравствуйте!

Оговорюсь сразу, речь идет о другом АЯКС запросе, не о том, о котором я спрашивал вас ранее. Т.е. здесь нет никаких проблем с кодировками, т.к. в GET передаются только числа.

Вопрос: через АЯКС я обращаюсь к серверному скрипту, он выдает какую-то строку. Все работает нормально. Однако, как только в скрипте я делаю Redirect (перенаправление через Location) на другой скрипт Opera не получает от него ответа.

Немного подробнее: в скрипте проверяется условие, в случае true остаемся в этом же скрипте и передаем клиенту окончательную строку, если false - то строку (из этого скрипта) клиенту не передаем и делаем Редирект на другой скрипт (по относительной ссылке), который в конце передает строку клиенту. Вот,,, в IE эта штука работает исправно, а вот Opera ведет себя странно: получается так, что когда Редиректа нет, то она строку получает, а когда он есть - строки нет.

Если знаете, что это за болезнь, подскажите, пожалуйста. Буду ну ОЧЕНЬ признателен.
2. evgenijj - 28 Февраля, 2008 - 19:10:31 - перейти к сообщению
Гм... Ну и вопросы у тебя. С моей точки зрения редирект в скрипте, отдающий клиенту (браузеру) результат работы вообще не должен посылать заголовок типа Location. Почему у тебя это работает - вообще не понятно. Разумеется, ИМХО.
3. SergeantPEPPER - 28 Февраля, 2008 - 20:06:19 - перейти к сообщению
Нет, серверный скрипт отдает клиенту результат работы только в том случае, если в нем не происходит редирект. А если он произошел, то скрипт останавливается и происходит переход на другой скрипт. Вот именно этот последний скрипт и отдаст результат своей работы. Почему же это не логично?

И я вот еще чего не понял: заголовок Location посылается откуда и куда (я наверное не очень хорошо знаю эту тему...)

P.S. Делать или не делать редирект у меня решает условная конструкция...
4. valenok - 28 Февраля, 2008 - 21:22:56 - перейти к сообщению
if()
else echo "<script>document.location='xyz.com'; ";
5. evgenijj - 28 Февраля, 2008 - 22:41:17 - перейти к сообщению
SergeantPEPPER пишет:
заголовок Location посылается откуда и куда (я наверное не очень хорошо знаю эту тему...)

Этот заголовок посылает сервер браузеру. Получив этот заголовок браузер запрашивает у сервера новый документ, указанный в Location.

А почему так сложно?
PHP:
скопировать код в буфер обмена
  1.  
  2. if ( ... ) {
  3.   echo 'someResponse';
  4. } else {
  5.   // Здесь исходные коды другого скрипта
  6.   echo 'otherResponse';
  7. }
6. SION-ZENIT - 28 Февраля, 2008 - 22:44:47 - перейти к сообщению
Я тоже думаю, что это не должно работать, ведь заголовок посылается в браузер, а не перекидывает на другой скрипт. Возможно проще будет включить скрипт, на который ты хочеш переслать с помощью requre_once();, он выполнит нужные команды а потом выйти.
-----
evgenijj немного опередил Улыбка
7. evgenijj - 28 Февраля, 2008 - 22:56:31 - перейти к сообщению
Я бы даже сказал больше. Обработка ответа от сервера происходит примерно так
PHP:
скопировать код в буфер обмена
  1.  
  2. // Функция, выполняемая при изменении статуса
  3. // запроса, если статус  равен 200, данные получены
  4. function processReqChange() {
  5.   if(req.readyState == 4) {
  6.     if(req.status == 200) {
  7.       // Здесь мы что-то делаем с полученными данными
  8.     } else {
  9.       alert("There was a problem retrieving the XML data:\n" + req.statusText);
  10.     }
  11.   }
  12. }
  13.  

Действия выполняются, если код ответа сервера 200. В случае использования заголовка Location код ответа:
303 See Other
Затребованный URI можно найти по другому URI (указанному в заголовке Location). Его следует выбрать методом GET по данному ресурсу.
8. SergeantPEPPER - 29 Февраля, 2008 - 17:55:03 - перейти к сообщению
Спасибо за советы.

На самом деле я спросил довольно глупый вопрос про откуда и куда, но это я понял только спустя несколько часов Улыбка

Проблему решил вообщем так, как и советовали evgenijj и SION-ZENIT.
Теперь проблема исчерпана, благодарю)

 

Powered by ExBB FM 1.0 RC1