2011-05-14 125 views
0

打開新窗口後,下面的腳本查詢返回的JSON響應PHP服務。爲每個返回的記錄創建按鈕,允許用戶從數據庫中刪除該記錄。下面還創建一個鏈接來刷新數據。jQuery腳本只能在IE

這一切都在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調用爲不可緩存。

今天學到新的東西,謝謝你們!

回答

0

也許IE對getNew生成的格式錯誤的HTML會產生阻塞作用;請注意,在您的.each循環中,您沒有關閉tr元素。此外,如果您收到JavaScript錯誤,JS執行可能會停止,所以請確保您的瀏覽器未配置爲忽略JS錯誤。檢查錯誤控制檯。