响应 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>
我想在响应完成之前显示我在 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>