PHP结合AJAX实现点击显示服务器时间功能失效如何解决?
问题排查结果
1. 核心语法错误(请求发起失败的直接原因)
getXMLHTTPRequest 函数中内置对象名拼写错误:
你写的判断条件是 if(window.XMLHTTPRequest),正确写法为 if(window.XMLHttpRequest),注意第二个单词是首字母小写的r,你误写为全大写的HTTP,现代浏览器识别不到错误拼写的对象属性,会直接进入旧IE的ActiveX分支,而当前主流浏览器都不支持该ActiveX控件,导致XHR对象初始化失败,整个AJAX流程直接中断。
2. 其他可选排查项
- 确认
show_server_time.php、ajax.js、get_server_time.php三个文件放在同一目录下,避免路径引用错误 - 确认
ajax_loader.png资源存在,或可临时删除加载提示代码测试,避免图片路径错误导致的显示异常 - 必须通过HTTP服务(Nginx/Apache/PHP内置服务)访问页面,不要直接打开本地静态文件,否则会触发跨域限制导致请求失败
修复后的ajax.js参考代码
function getXMLHTTPRequest(){ // 修正内置对象名拼写 if(window.XMLHttpRequest){ // 适配现代浏览器 return new XMLHttpRequest(); }else{ // 适配旧版IE浏览器 return new ActiveXObject("Microsoft.XMLHTTP"); } } function get_server_time(){ var xmlhttp = getXMLHTTPRequest(); var page = 'get_server_time.php'; xmlhttp.open("GET",page,true); xmlhttp.onreadystatechange = function() { // 优化:仅在请求未完成时显示加载状态,避免每次状态变更都覆盖内容 if(xmlhttp.readyState < 4) { document.getElementById('showtime').innerHTML = '<img src="ajax_loader.png" alt="加载中">'; } if (xmlhttp.readyState == 4 && xmlhttp.status == 200){ document.getElementById('showtime').innerHTML = xmlhttp.responseText; } } xmlhttp.send(null); }
内容的提问来源于stack exchange,提问作者boozlejelly
相关产品推荐
相关产品推荐

