JQM Как улучшить содержимое всей страницы, которое динамически вводится (в результате перенаправления)? - PullRequest
0 голосов
/ 07 июня 2018

Версия: JQM 1.4.5.

Сценарий
Когда сторона сервера отправляет обратно неверную разметку вместо ожидаемых данных JSON для вызова AJAX, конец пользовательского интерфейса будет отображать то, что сервер отправляет обратно(например, страница входа, страница системной ошибки ...)

Долгое время она работала хорошо для настольной версии.Сейчас я пытаюсь перенести логику для работы на JQM, у меня проблемы.

Симптомы:

(a) разметка страницы не улучшена.(b) Таблица стилей (указанная в теге на перенаправленной html-странице) не применяется

Код:

$.ajax({
    type: "POST",
    dataType: "json",
    ...

    error: function (XMLHttpRequest, textStatus, errorThrown) { 
        ...
        //display whatever server sends back. 
        if (textStatus == parsererror_textStatus ) { 

            document.write(XMLHttpRequest.responseText); 
            $('#main').trigger('pagecreate');
            $('#main').enhanceWithin();
        }
    }
});

Ссылки
Я немного искал в Интернете.Но это еще не сработало для меня.Какие-либо предложения?

https://www.gajotres.net/jquery-mobile-and-how-to-enhance-the-markup-of-dynamically-added-content/

jquery mobile Динамически вводимые страницы

http://demos.jquerymobile.com/1.3.2/faq/scripts-and-styles-not-loading.html

jQuery Mobile не применяет стилипосле динамического добавления контента

принуждение jQuery Mobile к повторной оценке стилей / тем для динамически вставленного контента

1 Ответ

0 голосов
/ 12 июня 2018

Я в конце концов заставил его работать.В случае, если это может помочь кому-то в будущем, позвольте мне опубликовать ответ здесь.

  • Элементы JQM должны быть улучшены и тематически.В этом случае «захватывать и отображать содержимое ответа перенаправления», мы должны сделать это программно;
  • Чтобы заставить # 1 работать, в конечном итоге выяснилось, что нам нужно загрузить «содержимое ответа» вDOM программно

Перечень кодов:

if (textStatus == parsererror_textStatus ) { displayResponseContent(XMLHttpRequest.responseText);
}

function displayResponseContent(fullResponse){
  loadIntoDOM( fullResponse);
  enhancePageMarkup();
}

//The response has to be loaded into DOM for later manipulation
function loadIntoDOM(fullResponse){
  var startIdx = fullResponse.indexOf("<body>");
  var endIdx = fullResponse.indexOf("</body>");
  var bodyTxt = fullResponse.substring(startIdx,  endIdx + 7);
  //The main thing here is to load the "body" into DOM
  var bodyDomNodes = $.parseHTML(bodyTxt, true);
  $(document.body).empty().append(bodyDomNodes);
}

//enhance the markup of dynamically added content(e.g: "page" in our case)
function enhancePageMarkup(){
  $('div[data-role=page]').trigger('pagecreate');
  $(document.documentElement).enhanceWithin();
  $('div[data-role=page]').addClass("ui-page-active");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...