Jquery скрипт работает только после переключения окон IE - PullRequest
0 голосов
/ 14 мая 2011

Сценарий ниже запрашивает службу php, которая возвращает ответ JSON.Кнопки создаются для каждой возвращаемой записи, что позволяет пользователю удалить эту запись из базы данных.Ниже также создана ссылка для обновления данных.

Это все прекрасно работает в IE, Chrome, Safari ... IE (пробовал 8 и 9), однако, имеет странную проблему.

Когда страница загружается, я могу обновить данные, нажав ссылку «обновить».После этого нажатие не дает никакого эффекта, ЕСЛИ Я не открою ту же страницу в другом окне IE, щелкните ссылку в новом окне и вернусь в исходное окно.Затем ссылка «обновить» работает в новом окне ОДИН раз.Затем он превращается в порочный круг.

Ваша помощь приветствуется!

<script type="text/javascript">

function getNew(){ 
$('#new').remove();
$.getJSON('service.php', function(data) {

  var items = [];

  items.push('<tr><th>EmplId</th><th>ExternalID</th><th>Name</th></tr>');   

  $.each(data, function(key, val) {

    var indiv = val.toString().split(",");
    items.push('<tr>');
    var id = indiv[0];

    $.each(indiv, function(index, value) {
        items.push('<td align="center" id="' + index + '">' + value + '</td>');
    });

    items.push('<td  class="updateButton" align="center" onclick=\'return update("'+id+'")\'>Update</td>');

  });
    items.push('<tr><td  class="refreshButton" align="center" onclick=\'return getNew();\'>Refresh </td></tr>');

  $('<table/>', {
    'id': 'new',
    html: items.join('')
  }).appendTo('body');
});
}



function update (emplID){
$.ajax({
  url: "service.php?emplID="+emplID,
  context: document.body,
  success: function(){

 $('#new').remove();

 getNew();

  }
});
}

</script>

</head>

Я все еще отключил кэш, но безрезультатно.ЕДИНСТВЕННЫЙ способ заставить ссылку работать, это открыть ту же страницу в отдельном окне, щелкнуть ссылку и вернуться в исходное окно.Есть ли какое-то решение для этого?

$(".refreshButton").live( "click" , function() { getNewStudents(); 
$.ajax({
  url: "studentService.php?emplID=",
  cache: false,
  context: document.body,
  success: function(){

 $('#newStudents').remove();

 getNewStudents();

  }
});
} );

Ответы [ 2 ]

0 голосов
/ 14 мая 2011

Может быть, IE кеширует страницу более тщательно.Кроме того, вы пытались использовать вид совместимости?

0 голосов
/ 14 мая 2011

Может быть, лучше пройти jQuery до конца. Вместо записи onclick для каждой ссылки добавьте подписчика в свой файл JavaScript:

$(".refreshButton").live( "click" , function() { getNew(); } );

live() прикрепит обработчик onclick ко всем существующим и будущим элементам, которые соответствуют селектору.

НТН.

РЕДАКТИРОВАТЬ:

Кстати, вот документация по API для live(), если вам интересно: http://api.jquery.com/live/

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