Сценарий ниже запрашивает службу PHP, которая возвращает ответ JSON. Кнопки создаются для каждой возвращаемой записи, что позволяет пользователю удалить эту запись из базы данных. Ниже также создана ссылка для обновления данных.
Все это прекрасно работает в IE, Chrome, Safari ... IE (пробовал 8 и 9), однако, имеет странную проблему.
Когда страница загружается, я могу обновить данные, нажав ссылку «обновить». После этого нажатие не дает никакого эффекта, ЕСЛИ Я не открою ту же страницу в другом окне IE, щелкните ссылку в новом окне и вернусь в исходное окно. Затем ссылка «обновить» работает в новом окне ОДИН раз. Затем он превращается в порочный круг.
Ваша помощь приветствуется!
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();
}
});
}
Я пытался использовать .live и получаю те же результаты.
$(".refreshButton").live("click" , function() {
getNew();
$.ajax({
url: "Service.php?emplID=",
context: document.body,
success: function(){
$('#new').remove();
getNew(); }
});
});
Я отключил кеш, но безрезультатно. ЕДИНСТВЕННЫЙ способ заставить ссылку работать, это открыть ту же страницу в отдельном окне, щелкнуть ссылку и вернуться в исходное окно. Есть ли какое-то решение для этого?
$(".refreshButton").live( "click" , function() {
getNewStudents();
$.ajax({
url: "studentService.php?emplID=",
cache: false,
context: document.body,
success: function(){
$('#newStudents').remove();
getNewStudents();
}
});
});
Спасибо за ваши предложения. Я исправил tr, но похоже, что решение было использовать
$.ajaxSetup({ cache: false });
Кажется, все версии IE обрабатывают вызовы ajax как обычные веб-запросы (кешируемые), тогда как другие браузеры считают вызовы ajax не кешируемыми.
Сегодня узнал что-то новое, спасибо, ребята!