首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AJAX多个ajax调用

AJAX多个ajax调用
EN

Stack Overflow用户
提问于 2015-11-29 06:20:01
回答 2查看 81关注 0票数 0

我有下面的代码,它的行为方式,我不明白。在我看来,这个目的很简单,如果第一个ajax调用成功,那么从另一个ajax调用中获取loggedInUser并将页面重新加载到创建的链接中。我的密码就像

代码语言:javascript
运行
复制
function getLoggedInUser() {    
  var username = "";    
  $.ajax({
    url: '/api/getLoggedInUser',
    data: [],
    dataType: 'json',
    type: 'GET',
    success: function(response) {
      alert("a " + username);
      username = response.username;
      alert("b " +username);
      var link = "/_marshall/rssadd/";
      link = link+username;
      alert("c " + link);

    },
    error: function(xhr, status, error) {
    var err = eval("(" + xhr.responseText + ")");
    //alert("Please Try Again, we had an internal error!");
      alert(err.message);
      args['error'] = "1";
    }
  });

  alert("d " + username);
  return username;
}

$(document).ready(function ()
{    
  $("#rssCreateSubmit").click(function(event) {    
    var rssInfo = {}    
    rssInfo["title"] = $("#rssCreateTitle").val();
    rssInfo["category"] = $("#rssCreateCategory").val();
    rssInfo["copyright"] = $("#rssCreateCopyright").val();
    rssInfo["description"] = $("#rssCreateDescription").val();

    $.ajax({
      url: '/api/createRSS',
      data: rssInfo,
      dataType: 'json',
      type: 'POST',
      success: function(response)
      {
        var loggedInUser = getLoggedInUser();
        alert("e " + loggedInUser);
      },
      error: function(xhr, status, error)
      {
      var err = eval("(" + xhr.responseText + ")");
      //alert("Please Try Again, we had an internal error!");
      alert(err.message);
      }
    });
  });

});

警报按此顺序打印出来,我不明白。我认为这与ajax是异步的有关,但我不太确定这意味着什么,我仍然觉得这段代码应该工作。谢谢。

代码语言:javascript
运行
复制
"d "
"e "
"a "
"b value"
"c /_marshall/rssadd/value"

以及以下更改中的html链接,而不是重新路由:

代码语言:javascript
运行
复制
http://www.bugbounty.design/_marshall/rsscreate/testMarshall1?rssCreateCategory=&InputEmail=
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-11-29 06:40:45

稍微移动一下逻辑,你就可以得到这个

代码语言:javascript
运行
复制
function getLoggedInUser() {
    return $.ajax({
        url: '/api/getLoggedInUser',
        data: [],
        dataType: 'json',
        type: 'GET',
        error: function(xhr, status, error) {
            var err = eval("(" + xhr.responseText + ")");
            //alert("Please Try Again, we had an internal error!");
            alert(err.message);
            args['error'] = "1";
        }
    });
}

$(document).ready(function() {
    $("#rssCreateSubmit").click(function(event) {
        $.ajax({
            url: '/api/createRSS',
            data: rssInfo,
            dataType: 'json',
            type: 'POST',
            success: function(response) {
                getLoggedInUser().then(function(response) {
                    alert("a " + username);
                    username = response.username;
                    alert("b " + username);
                    var link = "/_marshall/rssadd/";
                    link = link + username;
                    alert("c " + link);
                })
            },
            error: function(xhr, status, error) {
                var err = eval("(" + xhr.responseText + ")");
                //alert("Please Try Again, we had an internal error!");
                alert(err.message);
            }
        });
    });
});
票数 0
EN

Stack Overflow用户

发布于 2015-11-29 06:30:55

Ajax调用将从主执行线程中删除。这就是为什么首先打印'd‘和'e’的原因,因为它们不在ajax调用中。

我发现这个视频对理解ajax https://www.youtube.com/watch?v=8aGhZQkoFbQ真的很有帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33980017

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档