多个 ajax 请求未定义

Multiple ajax request getting undefined

本文关键字:未定义 请求 ajax 多个      更新时间:2023-09-26

我已经阅读了大多数多个 ajax 请求解决方案......我设法使用 if 语句嵌套使两个请求运行。我的代码是

$(document).on('click', '.postTitle', function(e) {
    e.preventDefault();
    var id = $(this).data('id');
    var request = $.ajax({
            url: 'includes/functions.php?job=single_blog',
            cache: false,
            data: 'id=' + id,
            dataType: 'json',
            contentType: 'application/json; charset=utf-8',
            type: 'get'
        });
    var request2 = $.ajax({
            url: 'includes/functions.php?job=blog_comment',
            cache: false,
            data: 'id=' + id,
            dataType: 'json',
            contentType: 'application/json; charset=utf-8',
            type: 'get'
        });
    request.done(function (output) {
        if (output.result === 'success') {
            request.done(function (output2) {
                if (output2.result === 'success') {
                    var single_blog = output.data[0].single_blog;
                    var blog_comment = output2.data[0].blog_comment;
                    $('.blog').empty().append(single_blog);
                    console.log(blog_comment);
                } else {
                console.log('ajax2 failed', 'error2');
                }
            });
        } else {
            console.log('Information request failed', 'error');
        }
    });
    request.fail(function (jqXHR, textStatus) {
        console.log('error');
    });
});

当我在 var single_blog 上做控制台.log时,我得到值,但当我在 var 上尝试时blog_comment我得到未定义......我在哪里错过了它?

尝试使用 $.when.apply() ,单个.done()

$.when.apply($, [request, request2])
.done(function(output, output2) {
  // do stuff with responses from `request`, `request2`
  if (output[0].result === "success" 
      && output2[0].result === "success") {
       var single_blog = output.data[0].single_blog;
       var blog_comment = output2.data[0].blog_comment;
       $(".blog").empty().append(single_blog);
       console.log(blog_comment);
  } 
})
.fail(function() {
   console.log("error");
})
我认为

而不是

request.done(function (output2) {

它应该是

request2.done(function (output2) {

request用于single_blogrequest2用于blog_comment

您犯了小错误,更改为以下内容

request.done(function (output) {
                if (output.result === 'success') {
                    request2.done(function (output2) {
                        if (output2.result === 'success') {
                            var single_blog = output.data[0].single_blog;
                            var blog_comment = output2.data[0].blog_comment;
                            $('.blog').empty().append(single_blog);
                    console.log(blog_comment);
                } else {'ajax2 failed', 'error2'}
            })