Навигация по мобильной странице Jquery повреждает базовый URL и приводит к сбою ajax на главной странице - PullRequest
2 голосов
/ 10 сентября 2011

Моя главная страница находится здесь: http://www.mydomain.com/main/main.php

Моя страница входа здесь: http://www.mydomain.com/main/pages/login.php

Main.php использует ajax для получения данных в ответ на событие касания.Это работает нормально, пока я не перехожу на свою страницу входа в систему, а затем возвращаюсь на свою главную страницу.После перехода на страницу входа и обратно относительные пути путаются так, что ajax ищет файл сервера в неправильном месте.

вот ajax:

   1. function get_more_data() {
   2.    more_data_index += 15;
   3.    var formData = "index=" + more_data_index;
   4.     $.ajax({
   5.       type: "POST",
   6.       url: "genxml.php", // file located here:  http://www.mydomain.com/main/genxml.php
   7.       cache: false,
   8.       data: formData,
   9.       dataType: "xml",
  10.       success: showFiles3,
  11.       error: onErrorMoreData
  12.     });
  13. }

После того, как яперейдите обратно к main.php из login.php, ajax пытается отправить сообщение в неправильное место: http://www.mydomain.com/main/pages/genxml.php

(genxml.php не находится в подкаталоге "pages"; он находится в главном каталоге.)

Я попытался обновить ajax для использования абсолютного пути: url: "http://www.mydomain.com/main/genxml.php"

Это сделало публикацию успешной, но мой анализ данных не удался, потому что пути родственников используются в главном файле для таких вещей, как изображения.вместо того, чтобы получать изображения отсюда: http://www.mydomain.com/main/ скрипт пытался получить изображения отсюда: http://www.mydomain.com/main/pages/

Я нашел несколько постов с людьми, у которых были похожие проблемы, но я ненатолкнулся на решение. Я также попытался прочитать документы jquerymobile, и вполне возможно, что разработчики jquery попытаются осветить эту проблему здесь, но я признаю, что не совсем все понимаю на этой странице: http://jquerymobile.com/demos/1.0b3/#/demos/1.0b3/docs/pages/page-navmodel.html

Если кто-то может помочь, я был бы очень признателен.Спасибо.

PS Эта проблема возникает на Android и Google Chrome, но не в Firefox.

Ответы [ 2 ]

1 голос
/ 29 октября 2011

Я создал рабочий пример того, что вы пытаетесь сделать. Вы должны быть в состоянии посмотреть на это и увидеть, что я сделал. Обязательно ознакомьтесь с master.js. Я думаю, что ключом к тому, чтобы заставить его работать в вашей ситуации, является вложение ajax-вызовов в событие «pageshow», чтобы быть уверенным, что ваш baseURL был обновлен. Вы можете скачать пример на http://www.roughlybrilliant.com/stackoverflow/7372909.7z

Просмотрите пример в действии, поскольку он загружает файл weather.xml с относительными URL-адресами.

$("div").live("pageshow", function(){
    var $page = $(this);
    get_more_data();
});
0 голосов
/ 29 октября 2011

Почему бы вам не использовать один из следующих способов:

  1. используйте "../main.php" при перенаправлении назад со страницы входа в систему или
  2. запомните UrlRefer из заголовков, когдаВы входите в login.php и используете его для перенаправления на любую предыдущую страницу с 301
...