js控制ajax的执行顺序但是偶尔还是乱序返回

    $.ajax({
        data:{
            delayNum:$("#ajax-one").val(),
        },
        url: "/test/one.do?callback?",
        calback:"jsonp"+new Date().getTime(),
        type:"post",
        callback:"callback",
        dataType:"jsonp",
        success:function(data){
            console.log(data);
            alert(data.result);
            }
    }).then(
        function(){
            return $.ajax({
                data:{
                    delayNum:$("#ajax-two").val(),
                },
                calback:"jsonp"+new Date().getTime(),
                url:"/test/two.do?callback?",
                type:"post",
                dataType:"jsonp",
                success:function(data){
                    console.log(data);
                    alert(data.result);
                }
            });
        }
    ).then(
        function(){
            return $.ajax({
                data:{
                    delayNum:$("#ajax-three").val(),
                },
                calback:"jsonp"+new Date().getTime(),
                url:"/test/three.do?callback?",
                type:"post",
                dataType:"jsonp",
                success:function(data){
                    console.log(data);
                    alert(data.result);
                }
            });
        }
    )
阅读 2k
4 个回答

这样写呢:

$.when(
    $.ajax({
        data:{
            delayNum:$("#ajax-one").val(),
        },
        url: "/test/one.do?callback?",
        calback:"jsonp"+new Date().getTime(),
        type:"post",
        dataType:"jsonp",
        success:function(data){
            console.log(data);
            alert(data.result);
        }
    })
).then(
    $.ajax({
        data:{
            delayNum:$("#ajax-two").val(),
        },
        calback:"jsonp"+new Date().getTime(),
        url:"/test/two.do?callback?",
        type:"post",
        dataType:"jsonp",
        success:function(data){
            console.log(data);
            alert(data.result);
        }
    });
).then(
    $.ajax({
        data:{
            delayNum:$("#ajax-three").val(),
        },
        calback:"jsonp"+new Date().getTime(),
        url:"/test/three.do?callback?",
        type:"post",
        dataType:"jsonp",
        success:function(data){
            console.log(data);
            alert(data.result);
        }
    });
)

使用es6的promise

jq不是很熟。可以试试在then里打印上一步的结果,看看是不是jq自己的问题。如果是的话可以自己重新封装一下

第三个请求应该写在第二个then里。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题