如何以链式方式在其他ajax中调用一个ajax?

时间:2016-03-18 04:47:17

标签: javascript jquery json ajax

如何以链式方式一个接一个地调用多个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?

我在这里做的错误是什么..?

任何人都可以帮我解决这个问题吗?

由于

4 个答案:

答案 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)