Возвращать контент, освежив страницу в Хкери Мобиле

Я реализую приложение с Хкери Мобиле и мое сомнение - следующее.

У меня есть весь html, который требуется, чтобы отображать приложение в одном index.html, когда пользователь работает с каким-то элементом doom, загружается часть контента index.html и другая часть dinámicamente, обработав ответ сервера с данными, которых хочет отобразить пользователь. До сих пор совсем правильный, проблема приходит, когда ты находишься на "экране", который исходит из нее, произвелась dinámicamente и ты освежаешь страницу, очевидно загружается статическая часть страницы и теряется вся динамическая часть, которая произвелась.

Конкретный пример: Когда пользователь loguea с Вашим счетом и хочется видеть Ваш профиль, загружает статический вид HTML, который содержит различные inputs, которые в зависимости от пользователя, который есться logueado, будет содержать информация или другая, если, загрузив страницу Вашими данными, вышеупомянутая страница освежится, исчезает весь динамический контент той же самой и остается вся статическая часть HTML, с пустыми inputs.

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

Код:

// Mi perfil público
$("#myprofile").on("click", function(){

//comprobamos que el usuario esta logueado
if (localStorage.rnl01user && localStorage.rnl01password) {

        //spinner de cargado
        $.mobile.loading("show");

        //creamos petición XML con valores necesarios
        var getprofile = getLoginRequest(localStorage.rnl01user, localStorage.rnl01password);

        //petición AJAX al servidor con el código XML generado
        callWebServiceAsync(URL_API_KERNEL, getprofile, successGetProfile);

        //Reiniciamos los valores
        $("#ProfileImg").html("");
        $("#ProfileCountry").html("");
        $("#ProfileTown").html("");
        $("#ProfileEvents").html("");
        $("#ProfileDescriptionTitle").html("");
        $("#ProfileDescriptionText").html("");
        $("#ProfileEmail").html("");
        $("#editProfilePass").text("Cambiar Contraseña");
        $("#editProfilePass").attr("data-pass", localStorage.rnl01password);
        $("#editProfileCity").text("Privado");
        $("#ProfileEventsIns").html("");
        $("#ProfileOrgGest").html("");


    }else{
        $.mobile.changePage("#nologinMsg");
    }

    // Función que se encarga de procesar el XML devuelto por el servidor, donde se encuentran todos los datos
    function successGetProfile(data, textStatus, jqXHR)  {

        //creamos variables
        var name="",email="",surName="",country="",region="",description="",image="",events="";

        //si devuelve valores los guardamos
        if ($(data).find("LoginRequestResult")) {
            var name = $(data).find('Name').text();
            var email = $(data).find('Email').text();
            var surName = $(data).find('Surname').text();
            var country = $(data).find('Country').text();
            var region = $(data).find('Region').text();
            var description = $(data).find('Description').text();
            var image = $(data).find('Image').text();
            var events = parseInt($(data).find('ActiveEvents').text()) + parseInt($(data).find('ClosedEvents').text());
            var cityCode=$(data).find("CityCode").text();
            var phone=$(data).find("PhoneNumber").text();
            var city=$(data).find("City").text();
            var inscribedevents=$(data).find("InscribedEvents").text();
            var orgestion=$(data).find("ManagedOrganizations").text();

        //si el usuario tiene imagen si pinta la imagen y el nombre, sino se pinta solo el nombre
        if (image!=""){
            $("#ProfileImg").html('

'+ name+'

'); }else{ $("#ProfileImg").html('

'+ name+'

') } //pintamos los valores obtenidos en los campos del html $("#ProfileCountry").html(country); $("#ProfileTown").html(region); $("#ProfileEvents").html(events); $("#ProfileDescriptionTitle").html("Presentacion de "+name); $("#ProfileDescriptionText").html(description); $("#ProfileEmail").html(email); //ponemos atributo codigo de la ciudad if (cityCode!=""){ $("#editProfileCity").attr("city-code",cityCode); }else{ $("#editProfileCity").attr("city-code","791000"); } //pintamos los valores obtenidos en los campos $("#profileDescription").val(description); $("#profilePhone").val(phone); $("#ProfilePhone").html(phone); //pintamos el nombre de la ciudad if (city!=""){ $("#editProfileCity").text(city); } $("#ProfileEventsIns").html(inscribedevents); $("#ProfileOrgGest").html(orgestion); } //Cambiamos a la página que contiene los datos del perfil del usuario $.mobile.changePage("#mypublicprofile"); //quitamos el spinner de carga $.mobile.loading("hide"); } });

Добро, я объясняю вам код сверху для того, чтобы он был проще для всех:

Первое, что мы делаем, состоит в том, чтобы подтверждать, что пользователь - logueado, того, чтобы не быть таким, он пересылается в страницу, которой единственное, что он делает, состоит в том, чтобы сообщать, что, чтобы видеть контент страницы, он должен быть loqueado, с кнопкой, которую он выпускает login.

Если пользователь - loqueado, поверьте XML, который будет послан в сервер посредством просьбы AJAX, вышеупомянутый XML производится с функцией getLoginRequest и параметры, которые мы переместили его.

Как только произвелся XML, он сохраняет в переменной в этом случае var getprofile, который будет содержать XML. После мы перемещаем эту переменную как параметр в функцию callWebServiceAsync, что берется за то, чтобы делать себе призыв к серверу посредством AJAX с XML, который произвелся. Ниже мы возобновляем стоимость всех элементов HTML, если уже они содержали какой-либо.

Когда сервер отвечает нам со статусом 200, он идет в функцию, которую мы показали ему, в этом случае successGetProfile. Которая подбирает всю информацию, которая возвратила нам сервер и обрабатывает ее.

То, что делает эту функцию, просто состоит в том, чтобы искать всю стоимость, что мы нуждаемся в том, чтобы покрасить в HTML, как имени, город, провинция, и т.д.

Изображения:

Botón que provoca el evento

Datos que pinta

Después de refrescar

4
задан 28.06.2016, 14:53
3 ответа

Dinamicamente, не освежая ничего абсолютно.

Всякий раз когда они делают событие "и этот производит динамический контент", ты можешь изменять унифицированный указатель ресурса также как и он это делает facebook во время открытия фотографии (унифицированный указатель ресурса меняется и фотография появляется, но никогда не загружено / перезагружать окно.)

Пример, у меня есть следующий унифицированный указатель ресурса

httx:////projectwatchfree.tv / tv-listings /

var current_url = (window.location.href).split('page');
	current_url = (current_url[0]).split('?');

    var pagex = 3;
    var url_letter = 'd';
	window.history.pushState("", "", current_url[0]+"page/"+pagex+"/letter/"+url_letter);

линия 1 извлекает унифицированный указатель ресурса и обрезает ее с "page"

линия 2 извлекает первый результат предыдущего и это отрезает где haiga один"?"

Наш url остался бы равным

Линия 3 добавляет, что automaticamente/dinamicamente/ó он меняет унифицированный указатель ресурса, и не перезагружая окна.

Тогда с этим примером мой унифицированный указатель ресурса остается таким

httx:////projectwatchfree.tv/tv-listings/page/3/letter/d

и лучшее состоит в том, что, если пользователь copea и это затруднение унифицированный указатель ресурса, вновь дает целое число, он обновляет.

Мои параметры даже сохраняются, я читаю их и показываю динамические результаты, которые он показал ранее (они не теряются).

Привет.

1
ответ дан 24.11.2019, 13:58
  • 1
    Спасибо за Джон отвечает, проблема, которая у меня есть, состоит в том, что Хкери Мобиле nativamente не позволяет перемещать пару и # 225; метры из-за унифицированного указателя ресурса, все то, что он мстит despu и # 233; s это загружается. Эта проблема я это решил недавно, чтобы мочь иметь одну p и # 225; gina из-за facebook и whatsapp, я могу сохранять пару и # 225; метры, которые я сохраняю в локальной переменной браузера и despu и # 233; s я подтверждаю, существует ли эта локальная переменная, если его существует, подбираю пару и # 225; метры, в которых я нуждаюсь, чтобы делать призыв к серверу и перемещаю его пару и # 225; метры в вызов... Другая проблема - что помимо произвождения сдержанных денег и # 225; обезьяна себе делают много вещей м и # 225; s – David 28.06.2016, 16:33
  • 2
    С которым быть должным и # 237; чтобы вновь повторять все c и # 243; я говорю, интересное быть и # 237; чтобы мочь делать trigger события, которое производит этот вызов с парой и # 225; метры, которые он перемещал бы его с какой-то переменной, хранившейся локально – David 28.06.2016, 16:35

Ты мог бы использовать localStorage (Документация), чтобы сохранять стоимость, в которой ты нуждаешься.

Чтобы сохранять их, он создает событие onblur, ontextchanged или то, в чем ты нуждаешься, и сохраняй стоимость:

function campo1modificado() {
    var valor = document.getElementById("campo1").value;
    localStorage['campo1'] = valor;
}

И добавь этот код в document ready для того, чтобы каждый раз, когда была загружена страница он подтвердил, сохранял ли ты стоимость.

$(document).ready(function() {
    var campo1= localStorage['campo1'];
    if (campo1.lenght > 0) {
        // guarda dónde queires este campo
        document.getElementById("campo1").value = campo1;
    }
}

EDIT: Если он предпочитает уходить в главную страницу и queires возобновлять элементы в javascript использует эту функцию в document ready:

$(document).ready(function() {
    window.location.reload(false); //firefox
    window.location = self.location; //chrome
    window.location.href = window.location.href //IE
}
1
ответ дан 24.11.2019, 13:58
  • 1
    Привет Miquel, спасибо за отвечание, что ты говоришь, состоит в том, чтобы сохранять каждый раз, когда произвелась одна p и # 225; gina со сдержанными деньгами и # 225; обезьяна вся стоимость счастья p и # 225; gina с из-за примера id элемента DOM и стоимость, которая установила правду?, что он перемещает, что, если я должен предохранять каждую из стоимости на данный момент от aplicaci и # 243; n я могу сходить с ума. Не s и # 233; если habr и # 225; другой способ это делать, guard и # 225; ndome весь html в s и # 237; что произвелся или немного, и в случае, если будет находиться в session storage показывать вышеупомянутый HTML. Посмотрим кто-то м и # 225; s смоги внушать меня jejeje, в плохие tendr и # 233; что делать это таким – David 28.06.2016, 14:55
  • 2
    Привет @David, в различных приложениях, что реализовал я лучший результат, всегда он был этим. Подумай, что s и # 243; ты должен делать это из-за тех p и # 225; ginas в тех, которые ты нуждаешься в , что в случае refresh ее p и # 225; gina ничего не теряй. Cu и # 225; ndo это я начинаю пара раз - м и # 225; s r и # 225; я прошу того, что кажется. – Miquel Coll 28.06.2016, 14:58
  • 3
    Привет снова Miquel, в конце концов ища из-за google я догадался, что очень сложно делать то, что я хочу сделать, схвати и # 237; что мы подумали, что пользователь, когда он освежит ее p и # 225; gina уйдите в начало aplicaci и # 243; n, но я остаюсь encontr и # 225; ndome с проблемой..., когда освежают ее p и # 225; gina и изменись в нее p и # 225; gina благополучного прибытия, прекращают функционировать все кнопки, костлявая все listeners ее p и # 225; gina они прекращают функционировать, с которым не возможно делать никакого acci и # 243; n, есть какой-то способ говорить ему во вновь перезагружали совсем стили, javascripts, html? – David 29.06.2016, 10:43
  • 4
    Я издаю мой ответ показывая то, что ты спрашиваешь у меня. – Miquel Coll 29.06.2016, 10:45
  • 5
    Привет Miquel спасибо за contestaci и # 243; n, но он следует за мной, не функционируя, редкое состоит в том, что в firefox, если, что функционирует правильно, я не понимаю xq в chrome, оно я не функционирует...., я буду продолжать исследовать, чтобы видеть, которому он проистекает. Я схожу с ума уже!!! jejej – David 29.06.2016, 11:32

в конце концов мне казаться нереальным сохранять все переменные в localStorage, так как помимо переменных, когда производится событие, делаются много других вещей помимо подбирания данных, с которым он был бы должен воссоздавать весь процесс снова, так что я решил, что посылать это login, когда пользователь делал refresh страницы предупреждая его сначала о том, что информация могли бы терять.... этот метод, я функционировало хорошо в Chrome, Он действует и Firefox, но не в IE и Safari, эти последние два браузера не позволяют изменить страницу до того, как он освежил страницу, которое я оставлял себе в тех же самых, так что в HTML я поместил рукописный шрифт для того, чтобы я redireccionara в случае, если документ пробовал перезагрузить одной унифицированный указатель ресурса отличная от той login. С этим я упорядочил несовместимость этих двух браузеров относительно другие. Приветствие

0
ответ дан 24.11.2019, 13:58