Javascript 如何确定ajax调用是否已完成?
愿和平与祝福降临在你们身上:) 基本上我有两个函数,每个函数执行一个ajax调用。比如: 1:Javascript 如何确定ajax调用是否已完成?,javascript,jquery,ajax,Javascript,Jquery,Ajax,愿和平与祝福降临在你们身上:) 基本上我有两个函数,每个函数执行一个ajax调用。比如: 1: function step1(){ var formdata = new FormData(); formdata = { 'URI': sendtosev }; $.ajax({ type: 'POST', url: 'http://localhost:20012/serv1', data: formdata,
function step1(){
var formdata = new FormData();
formdata = {
'URI': sendtosev
};
$.ajax({
type: 'POST',
url: 'http://localhost:20012/serv1',
data: formdata,
contentType: "text/html",
success: function(result){
$('.UID).text(result);
}
});
}
function step2(){
var stkname=$('.UID').text();
var formdata = new FormData();
formdata = {
'URI': stkname
};
$.ajax({
type: 'POST',
url: 'http://localhost:20012/serv1',
data: formdata,
contentType: "text/html",
success: function(result){
alert(result);
}
});
}
2:
function step1(){
var formdata = new FormData();
formdata = {
'URI': sendtosev
};
$.ajax({
type: 'POST',
url: 'http://localhost:20012/serv1',
data: formdata,
contentType: "text/html",
success: function(result){
$('.UID).text(result);
}
});
}
function step2(){
var stkname=$('.UID').text();
var formdata = new FormData();
formdata = {
'URI': stkname
};
$.ajax({
type: 'POST',
url: 'http://localhost:20012/serv1',
data: formdata,
contentType: "text/html",
success: function(result){
alert(result);
}
});
}
仅供参考:执行Step1Ajax是为了从Serv1Servlet获取一些数据。Step2Ajax使用Step1Ajax输出,并通过它从serv2获得一些新数据
现在我正在做的是:
$(function({
step1();
step2();
});
通过此step2
FormData为空,因为step1
尚未完成调用,并且尚未收到其输出
问题:如何查找step1()
ajax是否已完成并已收到输出,以便调用step2()
如果步骤1成功,只需调用步骤2
如果步骤1成功,只需调用步骤2…您可以使用jquery回调函数。请参考下面的代码
function step1(callback){
var formdata = new FormData();
formdata = {
'URI': sendtosev
};
$.ajax({
type: 'POST',
url: 'http://localhost:20012/serv1',
data: formdata,
contentType: "text/html",
success: function(result){
$('.UID).text(result);
callback(result);
}
});
}
function step2(result){
var stkname=$('.UID').text();
var formdata = new FormData();
formdata = {
'URI': stkname
};
$.ajax({
type: 'POST',
url: 'http://localhost:20012/serv1',
data: formdata,
contentType: "text/html",
success: function(result){
alert(result);
}
});
}
$(function({
step1(function(result){
step2();
});
});
您可以使用jquery回调函数。请参考下面的代码
function step1(callback){
var formdata = new FormData();
formdata = {
'URI': sendtosev
};
$.ajax({
type: 'POST',
url: 'http://localhost:20012/serv1',
data: formdata,
contentType: "text/html",
success: function(result){
$('.UID).text(result);
callback(result);
}
});
}
function step2(result){
var stkname=$('.UID').text();
var formdata = new FormData();
formdata = {
'URI': stkname
};
$.ajax({
type: 'POST',
url: 'http://localhost:20012/serv1',
data: formdata,
contentType: "text/html",
success: function(result){
alert(result);
}
});
}
$(function({
step1(function(result){
step2();
});
});
这是一个很好的回调候选者。例如,步骤1可以重写如下:
function step1(callback){
var formdata = new FormData();
formdata = {
'URI': sendtosev
};
$.ajax({
type: 'POST',
url: 'http://localhost:20012/serv1',
data: formdata,
contentType: "text/html",
success: function(result){
$('.UID').text(result);
callback();
}
});
}
然后,您可以在调用它时编写以下代码:
step1(step2);
这是一个很好的回调候选者。例如,步骤1可以重写如下:
function step1(callback){
var formdata = new FormData();
formdata = {
'URI': sendtosev
};
$.ajax({
type: 'POST',
url: 'http://localhost:20012/serv1',
data: formdata,
contentType: "text/html",
success: function(result){
$('.UID').text(result);
callback();
}
});
}
然后,您可以在调用它时编写以下代码:
step1(step2);
实现它的两种方法
实现它的两种方法
用于解释异步调用和如何使用它们的通读本可能重复:用于解释异步调用和如何使用它们的通读本可能重复: