Как изменить содержимое модальной функции через javascript?

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

Я написал об этом некоторое время назад. Описанная поддержка была отправлена ​​внутри Azure SDK и Visual Studio Update. Я не помню точных релизов, но я могу узнать, если это необходимо.

Претензии:

  • VS 2012 + VS update / VS 2013 + VS Update / VS2015
  • g10] MSDeploy v3

Примечание: если вы публикуете с CI-сервера, CI-серверу потребуются также обновленные версии

Редактировать профиль публикации

В VS при создании профиля публикации в Интернете настройки из диалога хранятся в Properties\PublishProfiles\ в виде файлов, которые заканчиваются на .pubxml. Примечание: есть файл .pubxml.user, этот файл не должен быть изменен

Чтобы отключить ваше приложение в автономном режиме в файле .pubxml, добавьте следующее свойство.

true

Примечания

Требуется ASP.NET

Способ, которым это было реализовано на стороне MSDeploy, заключается в том, что app_offline.htm файл удаляется в корневом каталоге веб-сайта / приложения. Оттуда среда выполнения asp.net обнаружит это и отключит ваше приложение в автономном режиме. Из-за этого, если ваш сайт / приложение не поддерживает asp.net, эта функция не будет работать.

Случаи, когда это может не работать

Реализация этого делает ее такой, что приложение не может быть строго отключено до начала публикации. Сначала файл app_offline.htm отбрасывается, затем MSDeploy начинает публикацию файлов. Он не дожидался, пока ASP.NET обнаружит файл и фактически отключит его. Из-за этого вы можете столкнуться с ситуациями, когда вы все еще сталкиваетесь с блокировкой файлов. По умолчанию VS позволяет retrys, так что обычно приложение будет отключено во время одной из попыток, и все будет хорошо. В некоторых случаях для ASP.NET может потребоваться больше времени. Это немного сложнее.

В том случае, если вы добавили true, и ваше приложение скоро не будет отключено, я предлагаю вам отключить приложение до начала публикации. Существует несколько способов сделать это удаленно, но это зависит от вашей настройки. Если у вас есть только доступ к MSDeploy, вы можете попробовать следующую последовательность:

  1. Используйте msdeploy.exe, чтобы отключить ваш сайт, отключив app_offline.htm
  2. Используйте msdeploy.exe для публикации ваше приложение (убедитесь, что синхронизация не удаляет файл app_offline.htm _)
  3. Подождите некоторое время
  4. Публикация сайта
  5. Используйте msdeploy.exe чтобы принести приложение онлайн, удалив app_offline.htm

Я написал, как вы можете это сделать на http://sedodream.com/2012/01/08/howtotakeyourwebappofflineduringpublishing.aspx . Единственное, чего не хватает в этом сообщении в блоге, - это отсрочка ожидания того, что сайт фактически будет отключен. Вы также можете создать скрипт, который просто вызывает msdeploy.exe напрямую, вместо того, чтобы интегрировать его в процесс сборки / публикации проекта.

0
задан John Caverns 13 July 2018 в 15:34
поделиться

2 ответа

Мое предложение состоит в том, чтобы добавить идентификатор атрибута к каждому вопросу divison со значением идентификатора вопроса, как показано ниже

<? foreach ($questions as $i=>$question) { ?>
        <div class='question' id="<? $question->id ?>">
          // Your remaining code here
        </div>
<? } ?>

. После отправки формы в обратном вызове ajax-вызова удалите div вопроса с помощью идентификаторы, которые отсутствуют в ответе, как показано ниже

function retakeQuiz(incorrect) {
    // I am assuming incorrect as [id, id, id] for example
    $('.question').each(function (index, question) {
       if (!incorrect.includes($(question).attr('id'))) {
           $(question).remove();
       }
    });
}
0
ответ дан Javascript Lover - SKT 17 August 2018 в 12:30
поделиться
  • 1
    Круто. Я сейчас пытаюсь это сделать. Но как я могу показать Вопросы с этими изменениями? – John Caverns 13 July 2018 в 18:09
  • 2
    Вы динамически строите вопросы html правильно? Итак, если вы нажмете на викторину, то что произойдет? Я думаю, что он вернет студентов на вопросы html. Но если вы попробуете мое предложение, вы не увидите исправленных вопросов. Вы попробовали? – Javascript Lover - SKT 14 July 2018 в 05:11
  • 3
    Да, я попробовал ваше предложение, и я могу получить требуемый результат. Но это не видно на экране. Когда я отлаживаю и вижу конкретный <div>, который показывает вопрос, он показывает корректный вывод по мере необходимости. Но как показать вопросы на экране. – John Caverns 16 July 2018 в 15:01
  • 4
    @JohnCaverns Давайте рассмотрим два таких типа: один для отображения вопросов, а другой для отображения Продолжить или Тест повторной проверки может быть со счетом. Поэтому нам нужно скрыть второй (кнопки div) и снова отобразить вопросы div, если нажата кнопка Retake Quiz . При повторном отображении вопросов div вам нужно снова добавить отфильтрованные вопросы в раздел вопросов. – Javascript Lover - SKT 17 July 2018 в 04:51
  • 5
    @JohnCaverns Если возможно, вы можете дать мне ответ JSON на вопросы с ответами с сервера, я сделаю здесь скрипку, которую вы можете понять. – Javascript Lover - SKT 17 July 2018 в 04:52

Выполнение манипуляций с двух сторон, подобных этому, всегда заканчивается немного тизи. Вместо того, чтобы изменять вопросы с помощью jQuery, можете ли вы изменить конечную точку PHP для возврата модального контента с учетом набора идентификаторов? Вот большая идея:

Ваш PHP-код имеет конечную точку, которая принимает список идентификаторов. Эти идентификаторы передаются в код PHP, который делает это, и возвращает список вопросов из идентификаторов (и соответствующих ответов). Когда пользователь сначала посещает вашу страницу, ваш PHP-код автоматически загружает все вопросы в модальный, поэтому пользователь получает всю викторину (подобно тому, как вы загружаете загрузку начальной страницы сейчас).

Как только они завершат викторину, вы сказали, что сохранили идентификаторы вопросов, которые они получили неправильно. Я бы рекомендовал отправить идентификаторы в ваш php-код, чтобы вернуть только что созданный модал, включая только те ответы, которые они получили неправильно. Затем вы можете просто заменить модальный контент на результат. Возможно, что-то вроде этого (это все psuedo-код, но я надеюсь, что он перевернул идею)

// user has finished taking the quiz

$.get({
    "url": "/yourendpoint" + ids.toString()
    "method": "GET"
}.then(function(data){
    $(".modal-content").html(data);
});
0
ответ дан Zac 17 August 2018 в 12:30
поделиться
  • 1
    Благодарю. Я думал об этом, но не знаю, как это сделать. Но, конечно же, он попробует. – John Caverns 13 July 2018 в 16:47
  • 2
    1. Напишите PHP-код, возвращающий вопросы 2. На конечной точке, которая возвращает HTML-страницу, вызовите PHP-код, который возвращает вопросы и загружает их на вашу страницу, как в примере выше. 3. Как только пользователь завершит викторину, запросите другой конечной точке (вам нужно написать эту новую конечную точку), которая возвращает содержимое modal-contents с вопросами, введенными в 4. Запишите HTML-код modal-content, как показано в фрагменте. Надеюсь, что это немного подробнее – Zac 13 July 2018 в 16:51
  • 3
    Благодарю. Это дает мне представление о том, как это сделать. Я ценю. – John Caverns 13 July 2018 в 17:11
Другие вопросы по тегам:

Похожие вопросы: