Это продолжение вопроса, который я задавал ранее.
Обновление веб-страницы при запуске процесса
Я хочу, чтобы на веб-странице отображалось, на какой стадии выполняется процесс с использованием Ajax. После каждого шага в коде файл перезаписывается текстом с указанием того, что только что произошло. Я хочу, чтобы веб-страница периодически отправляла запрос на этот файл и отображала его содержимое, используя setInterval или setTimeout. Как только кнопка нажата, веб-страница начинает свой цикл запросов, и сервер начинает свою длительную операцию.
Что у меня сейчас ...
Скрипт для периодических запросов:
<script type="text/javascript">
var d = setInterval("Check()", 3000);
function Check() {
var xmlhttp;
if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
}
else {// code for IE6, IE5
alert("get chrome");
}
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == 4) {
document.getElementById("s").innerHTML = xmlhttp.responseText;
}
}
xmlhttp.open("GET", "temp/test.txt", true);
xmlhttp.send();
}
/*$(document).ready(function () {
$("#uploadbutton").click(Check());
});*/
</script>
В настоящее время Check () запускается сразу после загрузки страницы. Я бы хотел, чтобы он вызывался только после того, как произошло событие click. Если я определю Check () внутри события click, он не распознает setInterval и будет проверять, только если я нажму кнопку еще раз. Это не большая проблема, так как я думаю, что будет нормально запустить скрипт. Он просто отобразит строку «не ищет». К сожалению, когда файл обновляется (и я проверил, что это так), страница не отображает содержимое, так как получает ответ. Он просто остается прежним, затем, когда код заканчивается, он сбрасывается к настройке по умолчанию. Может кто-нибудь сказать мне, почему страница не обновляется?
edit: забыл упомянуть, что событию click назначен onclick для кода C #, выполняющего функцию long. Я не знаю, смогу ли я запустить Ajax-функцию javascript и запустить код на C #. Вызовы Ajax имеют async = true, но часть сценария не работает параллельно коду, верно?
еще раз отредактируйте: я изменил скрипт для подсчета в сторону увеличения. Я ожидал, что он продолжит отсчитывать, пока кодовый код делал свое дело, но как только вы нажмете кнопку, он остановится. Как только кодовый код заканчивается, он перезапускает счет. Почему подсчет не продолжается? Я ожидаю, что он будет перезапущен, как только кодовая часть будет завершена, но я подумал, что он продолжит считать.