jQuery-Ajax load()方法在iOS Safari中无法显示内容的问题
问题解决:iPhone Safari无法显示load方法加载的内容
你的代码在Mac Safari中能正常将接口返回值加载到span标签,但iPhone Safari里接口返回正确却不显示,大概率是浏览器缓存或DOM执行时机的问题,以下是可行的解决办法:
方法1:禁用请求缓存
iPhone Safari会对GET请求做强缓存,即使接口返回新内容,浏览器也会直接复用缓存数据。可以在请求URL后添加时间戳参数,强制浏览器每次请求新内容:
var auto_refresh = setInterval(function () { var id = 800; $("#username").load("getuser.php?p="+id+"&t="+new Date().getTime()); }, 5000);
方法2:改用$.get手动更新DOM
jQuery的load方法在移动端Safari可能存在兼容性问题,改用$.get方法手动获取数据并更新DOM,兼容性更稳定:
var auto_refresh = setInterval(function () { var id = 800; $.get("getuser.php?p="+id+"&t="+new Date().getTime(), function(response) { $("#username").html(response); }); }, 5000);
方法3:确保DOM加载完成后执行脚本
原代码中脚本写在<html>标签外部,iPhone Safari的DOM解析机制更严格,可能导致脚本执行时目标span还未被创建。把脚本放到<html>内部,并包裹在$(document).ready中:
<html> <div> <span class="account-content" id="username"></span> </div> <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.1/jquery.min.js"></script> <script type="text/javascript"> $(document).ready(function() { var auto_refresh = setInterval(function () { var id = 800; $.get("getuser.php?p="+id+"&t="+new Date().getTime(), function(response) { $("#username").html(response); }); }, 5000); }); </script> </html>
优先尝试方法1和方法3的组合,一般就能解决问题。
内容的提问来源于stack exchange,提问作者hatched
相关产品推荐
相关产品推荐

