如何以链式方式一个接一个地调用多个ajax调用?
您好,
我有一个控制器方法,它根据需要通过ajax调用完成的起始限制和结束限制返回json。
因此,最初在第一个ajax调用开始限制= 1和结束限制= 100,并且在此ajax成功时,应调用相同的ajax调用,更新的起始限制= 101,结束限制= 200。
同样需要发送多个ajax reuqests直到达到1000的实际死线。
所以从1-100,101-200,201-300 e.t.c到1000只需要发送10个ajax电话。
实际上我发送这些链式的ajax;就这样,
$.ajax({
url: getdata/100/200",
type: "GET",
contentType: "application/json",
dataType: "json",
global: false,
data: JSON.stringify(data),
async: false,
success: function(data) {
json=JSON.stringify(data);
console.log("json" + json);
console.log(JSON.stringify(data));
if(json != null && json != "") {
//some logic
//2nd ajax
$.ajax({
url: getdata/101/201",
type: "GET",
contentType: "application/json",
dataType: "json",
global: false,
data: JSON.stringify(data),
async: false,
success: function(data) {
json=JSON.stringify(data);
console.log("json" + json);
console.log(JSON.stringify(data));
if(json != null && json != "") {
//some logic
//3rd ajax
$.ajax({
url: getdata/201/301",
type: "GET",
contentType: "application/json",
dataType: "json",
global: false,
data: JSON.stringify(data),
async: false,
success: function(data) {
json=JSON.stringify(data);
console.log("json" + json);
console.log(JSON.stringify(data));
if(json != null && json != "") {
}
}
但是所有的时间只有我的第一个ajax获得成功和其余的ajax; s没有被执行并且给出404错误。
是否需要设置一个timeinterval来调用一个ajax?
我在这里做的错误是什么..?
任何人都可以帮我解决这个问题吗?
由于
答案 0 :(得分:1)
您可以使用以下功能解决这些问题: -
// Make initial call to function with your data
myAjaxCall(data, 1, 100);
function myAjaxCall(data, startLimit, endLimit)
{
$.ajax({
url: "getdata/"+startLimit+"/"+endLimit, // Concat variables as per your codes
type: "GET",
contentType: "application/json",
dataType: "json",
global: false,
data: JSON.stringify(data),
async: false,
success: function(data) {
json=JSON.stringify(data);
console.log("json" + json);
console.log(JSON.stringify(data));
if(json != null && json != "") {
myAjaxCall(data, endLimit+1, endLimit+100);
}
}
});
}
答案 1 :(得分:0)
如果您需要链接Ajax,请尝试使用Jquery.Deferred
它看起来像:
@Html.ActionLink("DownloadFile", "Download", "MyController", new { filepath = item.FilePath.ToString(), filename = item.FileName.ToString() }, new { @target = "_blank" })
答案 2 :(得分:0)
您可以通过递归函数
来实现此目的function ajaxRun(data){
$.ajax({
url: "getdata/201/301",
type: "GET",
contentType: "application/json",
dataType: "json",
global: false,
data: JSON.stringify(data),
async: false,
success: function(resultData) {
json=JSON.stringify(resultData);
console.log("json" + json);
console.log(JSON.stringify(resultData));
if(json != null && json != "") {
ajaxRun(data);
}
}
});
}
答案 3 :(得分:0)
你好每个ajax成功方法都改变你的参数名称,如
success: function(resultData)
第二次
success: function(secondresultData)