开发者

Jquery script only works after switching IE windows

The script below queries a php service that returns a JSON response. Buttons are created for each returned record, allowing the user to delete that record from the database. A link is also created below to refresh the data.

This all works fine in IE, Chrome, Safari...IE (tried 8 & 9), however, is having a strange issue.

When the page loads, I am able to refresh the data by clicking the 'refresh' link. After this, clicking has no effect UNLESS I open the same page in a different IE window, click the link in the new window, and开发者_Python百科 return to the original window. The 'refresh' link then works on the new window ONE time. It then turns into a vicous cycle.

Your help is appreciated!

<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>

I have disabled the cache still to no avail. The ONLY way to make the link work is to open the same page in a separate window, click the link, and return to the original window. Is there any solution to this?

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

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

 getNewStudents();

  }
});
} );


Might be better to go jQuery all the way. Instead of writing an onclick to each link, add a subscriber to your JavaScript file:

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

live() will attach the onclick handler to all existing and future elements that match the selector.

HTH.

EDIT:

BTW, here's the API documentation for live(), if you're interested: http://api.jquery.com/live/


Maybe IE is caching the page more thoroughly. Also, have you tried using compatibility view?

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜