javascript - 紧固此 Ajax 响应

标签 javascript php ajax

以下 Ajax 可以工作,但需要一段时间才能通知客户端用户用户名已被占用。有什么方法可以加快这种响应,或者这只是 Ajax 的正常行为。

客户:

    <title>Choose a username</title> 

    <style>
    #targetDiv {
      background-color: #FF9999;
      width: 40%;
    }
    </style>

    <script type = "text/javascript">
      var XMLHttpRequestObject = false; 

      if (window.XMLHttpRequest) {
        XMLHttpRequestObject = new XMLHttpRequest();
      } else if (window.ActiveXObject) {
        XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
      }

      function getData(dataSource) 
      { 
        if(XMLHttpRequestObject) {
          XMLHttpRequestObject.open("GET", dataSource); 

          XMLHttpRequestObject.onreadystatechange = function() 
          { 
            if (XMLHttpRequestObject.readyState == 4 && 
              XMLHttpRequestObject.status == 200) { 
                if(XMLHttpRequestObject.responseText == "taken"){
            var targetDiv = document.getElementById("targetDiv");

            targetDiv.innerHTML = "<div>That username is taken.</div>";
                }
            } 
          } 

          XMLHttpRequestObject.send(null); 
        }
      }

      function checkUsername(keyEvent) 
      {
        keyEvent = (keyEvent) ? keyEvent: window.event;
        input = (keyEvent.target) ? keyEvent.target : keyEvent.srcElement;

        if (keyEvent.type == "keyup") {
          var targetDiv = document.getElementById("targetDiv");
          targetDiv.innerHTML = "<div></div>";

          if (input.value) {
            getData("check.php?name=" +input.value);
          } 
        }
      }
    </script>

  </head> 

  <body>

    <H1>Choose a username</H1>

    Enter your new username <input id = "textField" type = "text" 
      name = "textField" onkeyup = "checkUsername(event)">

      <div id = "targetDiv"><div></div></div>

  </body> 

</html>

服务器

<?php 
    if ($_GET["name"] == "steve"){
      echo "taken";
    }
    else {
      echo "ok";
    } 
?>

最佳答案

您的问题是“如何加快响应速度”。

响应由您的服务器通过网络发送。 净传输所需的时间总是会有所不同。 但是您可以尝试通过优化网络服务器和 PHP 的配置来获得更快的服务器响应。您可以使用 absiege 等基准测试工具来测试服务器的响应行为。 然后调整、测试、比较结果,重复直到满意为止。 对服务器的请求就是对服务器的请求。无论如何,如果它是由浏览器通过 ajax 或基准测试工具完成的。

例如,与 PHP 5.3 相比,升级到 PHP 5.6 并启用和调整 opcache 可以显着提高性能。有很多可能的优化。这个问题太宽泛,无法详细说明。

当查看客户端 JS 时:这是普通的 JS。 没有太大的改进空间。我唯一想到的是 将 IE 的 xhrObject 从非常旧的 "Microsoft.XMLHTTP 更改为 new ActiveXObject("Msxml2.XMLHTTP.6.0"); (并且可能添加后备到new ActiveXObject("Msxml2.XMLHTTP.3.0");)。

关于javascript - 紧固此 Ajax 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30953484/

相关文章:

javascript - 更改相同id的类

javascript - jquery计算总金额但不显示

jQuery - 获取图像 url/链接/路径以从客户端上传图像到 imgur

javascript - ajax如何异步: false option work under the hood?

javascript - Ajax如何对多种表单的数据字段进行优先级排序?

javascript - EventSource(服务器发送的事件)中的 HTTP 授权 header

javascript - Material UI 监听桌面上的滚动(React)

php - 何时以及如何在 PHP 中使用常量?

php - 为 PDO 绑定(bind)参数后构建响应数组

php - 在php中将数据导出到csv文件