javascript 我怎样才能等到 AJAX 处理从web服务器接收到数据之后才能处理成功呢?

4xrmg8kj  于 2023-03-16  发布在  Java
关注(0)|答案(1)|浏览(109)

请原谅我的英语水平不高。这条消息是在ChatGPT的帮助下写的,但请理解我可能无法识别消息中的任何错误。
我正在尝试通过 AJAX 从node.js express Web服务器接收JSON数据,但是由于获取和编辑JSON数据需要大约1 - 2分钟,所以我想等待AJAX处理,直到Web服务器完成此处理并向AJAX返回响应。
因此,我尝试使用“done”,但“done”中定义的处理在响应返回之前正在执行,导致处理异常,我还尝试将“async”更改为false,但不起作用。
这个处理类似于等待服务器响应的加载画面,我已经实现了使加载画面消失并根据处理结果在网页上显示画面的所有功能,但目前无法像前面提到的那样通过 AJAX 接收数据。
我试着把它转换成成功
这是我的示例代码:

$.ajax({
    url: "/simpleAchive/dataUpdate",
    type: "GET",
    contentType: "application/json",
    data: 'type=' + param,
    dataType: 'json',
    async: false,
    success: function (res, status, xhr) {
        success();
    },
    error: function (xhr) {
        alert("error");
    },
    complete: function () {
        $('.hidden.running > .refresh_img').css('animation-play-state', 'paused');
        $('.hidden.running').removeClass('running');
    }
});

如果有任何合适的示例或信息来实现这个特性,请让我知道。谢谢。

我解决了这个问题!我没有在我的node.js web服务器项目中使用promise。用promise重试。然后~~,我 AJAX 请求可以等待响应!
我 AJAX 请求没有任何问题,我的node.js项目有一个问题!感谢所有的回答和评论!非常非常感谢!

mlmc2os5

mlmc2os51#

你应该使用异步 AJAX 请求,并在成功回调和中处理响应数据。要实现等待服务器响应的加载屏幕,你可以在发送AJAX请求之前显示加载屏幕,并在成功或错误回调中隐藏它。

// show loading screen
$('#loading').show();

$.ajax({
  url: "/simpleAchive/dataUpdate",
  type: "GET",
  contentType: "application/json",
  data: 'type=' + param,
  dataType: 'json',
  success: function(res) {
    // hide loading screen
    $('#loading').hide();

    // process response data
    processData(res);
  },
  error: function(xhr) {
    // hide loading screen
    $('#loading').hide();

    // handle error
    alert("error");
  }
});

相关问题