响应 jquery ajax 完成前

Response jquery ajax before done

我想在响应完成之前显示我在 php 中刷新的信息。 我搜索并编写了以下代码 我在进度完成后得到响应,但我想在 php 脚本进程和用户查看正在完成的操作时显示结果。 我该怎么做?

谢谢

我的代码:

<!doctype html>
<html lang="">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
<form>
    <input type="text" id="ip" value="127.0.0.1">
    <button type="button" onclick="save()">send</button>
</form>

<iframe id="loadarea"></iframe>


<script src="jquery-3.5.1.min.js"></script>
<script type="text/javascript">
    function save() {
        let ip = $('#ip').val();
        let req = $.ajax({
            type: 'POST',
            url: 'xample.php',
            data: {
                ip: ip
            }
        });

       **************************************************************
       *                                                            *
       *  req.progress(function (res) {                             *
       *      document.getElementById('loadarea').src = 'nmap.php'; *
       *  });                                                       *
       *                                                            *
       **************************************************************
        req.done(function (res) {
            if (res == "cant") {
                 console.log('fail');
            }else
                 console.log('ok' );
        });
    }
</script>
</body>
</html>

为了显示进度,您可以设置一个时间间隔来检查您的 process.like 状态:

  <script type="text/javascript">
    function save() {
      let ip = $('#ip').val();
      let req = $.ajax({
        type: 'POST',
        url: 'xample.php',
        data: {
          ip: ip
        }
      });

      req.done(function (res) {


//================================
        //  set interval for check status of progress every 1 sec
        setInterval(() => {
          let reqStatus = $.ajax({
            type: 'POST',
            url: 'xampleStatus.php',
            data: {
              ip: ip
            }
          });
          req.done(function (resStatus) {
            console.log(resStatus);
          });

        }, 1000);


//================================

        if (res == "cant") {
          console.log('fail');
        } else
          console.log('Start progress');
      });



    }
  </script>

我用这种方法解决了这个问题:

<script src="jquery.min.js"></script>
<script type="text/javascript">
    function save() {
        var ip = $('#ip').val();
        var data = new FormData();
        data.append('ip', ip);
        var xhr = new XMLHttpRequest();
        xhr.open('POST', 'example.php', true);

        xhr.send(data);
        xhr.onreadystatechange = function () {
            if (xhr.status === 200) {
                if (xhr.readyState === XMLHttpRequest.LOADING) {
                    $('#loadarea').html(xhr.response);
                }
                if (xhr.readyState === XMLHttpRequest.DONE) {
                    $('#loadarea').append("finished!!!");
                }
            }
        }
    }
</script>