[英]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.