You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 12:06:04