jQuery $. GetJSON и окно. Проблема конфликта местоположений - PullRequest
0 голосов
/ 22 марта 2011

У меня странная ситуация, когда jQuery $.getJSON / $.ajax call прерывается простым событием JavaScript window.location = 'http://new.com/'.

  1. Событие Fire

    window.location = 'http://example.com/something-that-takes-a-couple-seconds';
    
  2. Пока вышеуказанный URL-адрес подключается, но до того, как браузер на самом деле что-то перерисовывает, сделайте вызов $.getJSON.В моем случае я запускаю это, прокручивая страницу до конца (загружая больше результатов).
  3. Вместо того, чтобы фактически перейти к http://example.com/something-that-takes-a-couple-seconds, вместо этого подключитесь к URL-адресу JSON http://example.com/ajax/getJSONList.php?params=... и просмотритенабор результатов в формате JSON в виде простого текста.

Кто-нибудь сталкивался с этой проблемой раньше?

Полагаю, достаточно простое решение - просто заблокировать все дальнейшее выполнение JavaScript любыми средствами, необходимыми сразу после запускаwindow.location изменить?

РЕДАКТИРОВАТЬ: Вы можете увидеть код в действии здесь: http://myscubadives.com/,, но будет не очень интересно пробираться.

Воспроизвести: Сначала, используйте кнопку входа в Facebook в правом верхнем углу.Войдите в Facebook и разрешите доступ к моему сайту.После подключения бита Facebook запускается следующая строка: location.replace ('/ user / facebook');- Я пробовал location.replace (), location.href, window.location.Та же проблема для всех.

Теперь, пока подключается '/ user / facebook', очень быстро прокрутите страницу вниз.Это вызовет вызов getJSON.Вместо того, чтобы нажимать '/ user / facebook', вам будет представлен RAW JSON.

Я постараюсь сделать пример страницы со всеми остальными материалами, которые будут удалены как можно скорее, если никто не сможет помочь мне таким образом.

1 Ответ

0 голосов
/ 22 марта 2011

Ну, не должно ли изменение window.location заставить браузер подключиться и начать загрузку новой страницы, отказавшись от старой со всеми вызовами AJAX?

Да, только что проверил, изменяя любое свойство в window.location, но хэш заставляет документ перезагрузиться. Поэтому я думаю, что браузер просто отбрасывает все текущие вызовы AJAX для загрузки нового документа, что было бы довольно логично для браузера.

Что касается того, как это исправить, запретите все вызовы AJAX после установки window.location.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...