Jquery - 2 Ajax请求不在同一页面上工作

时间:2017-09-03 11:22:11

标签: javascript jquery ajax

所以我有一天这个问题,我无法从同一页面发送2个a​​jax请求。 我读过的大部分文档都是关于使用无冲突方法在同一页面上运行2个版本的jquery 但我正在尝试使用相同版本的Jquery发送2个a​​jax请求。

继承我的代码

<script>
$(document).ready(function(){
    var username = $("title").html();
    $.post("functions/userdetails.php", {username: username},
    function(result){
      if(result == 'nf'){
          alert("The Account Doesnt Exist");
      }
      else{
          var obj = JSON.parse(result);
          $.each(obj, function(key, val) {          // iterate over results
          $("#name").html(val.fname+" "+val.lname);
          $("#bio").html(val.bio);
          $("#username").html("@"+val.username);
          $("#tid").html(val.id);
        })        
    }
    }
);
});
$(document).ready(function(){
    var tid = $("tid").html();
    var myid = $("myid").html();
    $.post("functions/checkrelations.php", {tid: tid, myid:myid},
    function(result){
      if(result == 'nf'){
          $("#sendr").show();
          $("#cancel").hide();
      }
      else{
          $("#cancel").show();
          $("#sendr").hide();
        })        
    }
    }
);
});
</script>

如果我只有一个请求,那么效果很好,但是当我把它们放在一起时,它们都不起作用。

2 个答案:

答案 0 :(得分:2)

以下是您的代码的编辑版本,这可能对您有所帮助

@Override
public void keyReleased(KeyEvent e)
{
    typeText();
    /*new TwoSecondDelay (Integer.toString(name));
    name++;
    client.setText(server.getText());*/

}

public void typeText(){
    ActionListener listener = new ActionListener(){
        public void actionPerformed(ActionEvent event){
            client.setText(server.getText());
        }
    };
    Timer timer = new Timer(2000, listener);
    timer.setRepeats(false);
    timer.start();
}

答案 1 :(得分:2)

正如Ananthakrishnan Baji在评论中所说,看来你的第二个功能取决于你的第一个功能。

第二个功能还有一些其他问题。 ID缺少jQuery选择器中的哈希标记。该函数的右括号似乎被赶上了else语句。

我建议使用Promises来保持较低的代码深度并处理错误,而不是仅仅嵌套函数并最终深入到嵌套的代码块中。像这样:

$(document).ready(function(){
    var username = $("title").html();
    // Make your first request
    $.post("functions/userdetails.php", {username: username})
    // Handle the first response
    .then(function(result) {
        if (result === 'nf') {
            // Use promise chain rejection to handle errors.
            return $.Deferred().reject("The Account Doesn't Exist");
        } else {
            var obj = JSON.parse(result);
            // Are there actually multiple, here?
            // This will overwrite on each loop.
            $.each(obj, function(key, val) {          
                $("#name").html(val.fname + " " + val.lname);
                $("#bio").html(val.bio);
                $("#username").html("@" + val.username);
                $("#tid").html(val.id);
            });
        }
    })
    // Make the next request.
    .then(function() {
        var tid = $("#tid").html();
        var myid = $("#myid").html();
        return $.post("functions/checkrelations.php", {tid: tid, myid:myid});
    })
    // Update the appearance
    .then(function(result) {
        if (result === 'nf') {
            $("#sendr").show();
            $("#cancel").hide();
        } else {
            $("#cancel").show();
            $("#sendr").hide();
        }
    })
    // This is the "catch" logic.
    .then(null, function(errorMessage) {
        if (typeof errorMessage === 'string') {
            alert(errorMessage);
        } else {
            // If the requests error, or the JSON.parse throws, we end up here.
            alert('Something went wrong!');
        }
    }
});