[英]Jquery script works only after opening new window in IE
下面的脚本查询返回JSON响应的PHP服务。 为每个返回的记录创建按钮,从而允许用户从数据库中删除该记录。 在下面还创建了一个链接以刷新数据。
在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调用视为普通的Web请求(可缓存),而其他浏览器则将ajax调用视为不可缓存。
今天学到了新东西,谢谢大家!
也许是因为缓存,您是否尝试过清除缓存并重试? 这可能会有所帮助http://kb.iu.edu/data/ahic.html#ie8
IE可能正在getNew
生成的格式错误的HTML。 请注意,在您的.each
循环中,您没有关闭tr
元素。 另外,如果遇到JavaScript错误,JS可能会停止执行,因此请确保未对浏览器进行配置,使其忽略JS错误。 检查错误控制台。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.