Div innerHTML не обновляется во время вызовов jquery ajax - PullRequest
1 голос
/ 18 февраля 2011

Я столкнулся с проблемой при обновлении HTML-кода DIV.
HTML-код для Div:

<div id="divforlog" 
     style="z-index:200000; overflow:auto;
     position:fixed; width:400px;
     height:300px; border:solid 2px gray;
     padding:10px; background-color:#F1F1F1">
</div>

Нажатие кнопки Я вызываю код, который показывает этот скрытый div.А затем принимает массив, строку, которая содержит идентификаторы страницы.Для каждого идентификатора я вызываю страницу «.ashx», используя jquery, и в случае успеха обновляю HTML-код div.Все это прекрасно работает в Firefox, но не в других браузерах (Chrome и IE).в конце всей функции я скрываю div, используя метод jQuery «slideUp».Это скольжение работает в Firefox, IE и Chrome и показывает весь внутренний HTML-код div перед исчезновением.Так что моя главная проблема в том, что div не отображается и не обновляется.В Javascreipt также есть ссылка на div, которая используется для индикатора выполнения и не отображается в IE и Chrome.

Код JavaScript выглядит следующим образом:

var progress = 0;
var totalpages;
var logstring = '';

function getProgressBarValue() {
  var s =
    '<span style="text-align:center;display:block">' +
    Math.round($('#progressbar').progressbar('option', 'value')) +
    '%</span>';
  return s;
}

function UpdateProgressBar(arg) {
  if (arg == 0) {
    var pvalue = (progress / totalpages) * 70;
    $('#progressbar').progressbar('option', 'value', pvalue);
  } else {
    $('#progressbar').progressbar('option', 'value', 100);
  }
}

function getPageName(PageID) {
  return PageName; //string
}

function DisplayLogDiv() {
  $('#divforlog').css('display', '');
  $('#divforlog').css('top', 300);
  $('#divforlog').css('left', 300);
  $('#divforlog').html('');
  $('#divforlog').slideDown();

  $('#progressbar').css('top', 280);
  $('#progressbar').css('left', 300);
  $('#progressbar').show();
  $('#progressbar').progressbar({ value: 0 });
  $('#progressbar').progressbar('option', 'value', 0);
  logstring = '';
  progress = 0;
  totalpages;
}

function AddLog(logstr) {
  $('#divforlog').html(getProgressBarValue() + logstring);
}

$('#mybutton').click(function() {
  DisplayLogDiv();

  $('#CustomerDetails').show();
  var PageIDs; //it is from some hidden field
  PageIDs = PageIDs + ',';
  var pageArray = PageIDs.split(',');
  totalpages = pageArray.length - 1;

  for (var i = 0; i < pageArray.length; i++) {
    //loop start here
    if (pageArray[i] != '') {
      progress = progress + 1;

      $.ajax({
        contentType: 'text/html; charset=utf-8',
        data: somedatatobepassed,
        url: 'PublishIntermediate.ashx',
        dataType: 'html',
        async: false,
        cache: false,
        success: function(data) {}
      });

      UpdateProgressBar(0);
    }
  }

  $.ajax({
    contentType: 'text/html; charset=utf-8',
    data: somedatatobepassed,
    url: 'PublishIntermediate.ashx',
    dataType: 'html',
    async: false,
    cache: false,
    success: function(data) {
      UpdateProgressBar(100);

      AddLog(data);
    }
  });

  $('#CustomerDetails').hide();
  $('#divforlog').slideUp(500);
  $('#progressbar').slideUp(500);

  return false;
});

С уважением Ульфат Хуссейн

1 Ответ

0 голосов
/ 05 мая 2017

Эти коды

$('#CustomerDetails').hide();
$('#divforlog').slideUp(500);
$('#progressbar').slideUp(500);

внутри вашего успешного состояния AJAX,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...