JQuery 带进度条的多个请求
JQuery Multiple Request with Progress Bar
我想弄清楚如何在 JQuery 中编写进度条并执行多项任务。我已经编写了任务,例如:
http://example.com/api/task1.php -> returns 成功/失败 header
http://example.com/api/task2.php -> returns 成功/失败 header
等...
这是它的作用。人提交值(IP 地址),然后我有大约 10 个不同的 "checks" 服务做。每次检查后,/api/'s 将 return 成功 header 然后我希望进度条更新,10%、20% 等
我猜是这样的,这很接近吗?
$(function() {
$("#form").submit(function(){
var url= $("#url").val();
var submitvalue= 'url='+ url;
$.ajax({
type: "POST",
url: "/api/task1.php",
data: submitvalue,
cache: false,
success: function(html){
event.preventDefault();
progressbar(10);
runtask2();
}
}
}
}
有没有更优雅的方案?
这是我想出的,它已经足够通用以供其他人使用。它确实使用 JQuery 和 JQuery UI
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<script>
var did; // global variable
// Step 1 - first check
$( "#signup1" ).submit(function( event ) {
// Stop form from submitting normally
event.preventDefault();
// Get user value from URL Field in form signup1
url = $("#url").val();
// Page to submit request to
page = "/scripts/signup/1.php";
// Set progress bar status
$('#status').text('Performing Task 1..');
$('#progressbar').progressbar({ value: 10 });
// Send the data to the page
var posting = $.post( page, { url: url } );
posting.done(function( data ) {
console.log(data); // for debugging
did = (data); // this is needed to perform the other checks
// move progress bar a little more
$('#progressbar').progressbar({ value: 20 });
// move on to next process
check2();
});
});
// additional checks formatted like this...
function check2() {
$('#status').text('Performing Task 2..');
page = "/scripts/signup/2.php";
var posting = $.post( page, { id: did } );
posting.done(function( data ) {
console.log(data); // debugging
var content = $( data );
$('#progressbar').progressbar({ value: 30 });
})
}
</script>
我想弄清楚如何在 JQuery 中编写进度条并执行多项任务。我已经编写了任务,例如:
http://example.com/api/task1.php -> returns 成功/失败 header http://example.com/api/task2.php -> returns 成功/失败 header 等...
这是它的作用。人提交值(IP 地址),然后我有大约 10 个不同的 "checks" 服务做。每次检查后,/api/'s 将 return 成功 header 然后我希望进度条更新,10%、20% 等
我猜是这样的,这很接近吗?
$(function() {
$("#form").submit(function(){
var url= $("#url").val();
var submitvalue= 'url='+ url;
$.ajax({
type: "POST",
url: "/api/task1.php",
data: submitvalue,
cache: false,
success: function(html){
event.preventDefault();
progressbar(10);
runtask2();
}
}
}
}
有没有更优雅的方案?
这是我想出的,它已经足够通用以供其他人使用。它确实使用 JQuery 和 JQuery UI
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<script>
var did; // global variable
// Step 1 - first check
$( "#signup1" ).submit(function( event ) {
// Stop form from submitting normally
event.preventDefault();
// Get user value from URL Field in form signup1
url = $("#url").val();
// Page to submit request to
page = "/scripts/signup/1.php";
// Set progress bar status
$('#status').text('Performing Task 1..');
$('#progressbar').progressbar({ value: 10 });
// Send the data to the page
var posting = $.post( page, { url: url } );
posting.done(function( data ) {
console.log(data); // for debugging
did = (data); // this is needed to perform the other checks
// move progress bar a little more
$('#progressbar').progressbar({ value: 20 });
// move on to next process
check2();
});
});
// additional checks formatted like this...
function check2() {
$('#status').text('Performing Task 2..');
page = "/scripts/signup/2.php";
var posting = $.post( page, { id: did } );
posting.done(function( data ) {
console.log(data); // debugging
var content = $( data );
$('#progressbar').progressbar({ value: 30 });
})
}
</script>