首页 > 解决方案 > 如何解析/获取 Ajax 延迟响应

问题描述

我正在尝试获取使用 ajax 发送到 PHP 邮件页面的电子邮件表单的响应代码。如果邮件发送成功,它会回显 1 否则 0。

这是我发送的方式

$('form.ajax-form').on('submit', function(evt){
  evt.preventDefault();
  var $form = $(this);
  $.ajax({
    url: $form.attr('action'),
    method: $form.attr('method'),
    data:$form.serialize(),
    success: function(response){
      if (response == '1' ) {
        M.toast({html: 'I am a toast!'});
      }else if (response == '0') {
        M.toast({html: 'I am not a toast!'});
      }
    },
  });
});

根据我想要执行的响应,M.toast({html: 'I am a toast!'});但即使 PHP 邮件程序回显 1 或 0,我也无法获得响应。邮件程序需要 4 秒才能回显响应。我试过delay : 4了仍然无法得到响应。我究竟做错了什么 ?请帮忙。谢谢你。

更新。

以下是 XHR 的回复。

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

标签: jqueryajax

解决方案


这是工作代码。

$('form.ajax-form').on('submit', function(evt){
  evt.preventDefault();
  var $form = $(this);
  $.ajax({
    url: $form.attr('action'),
    method: $form.attr('method'),
    data:$form.serialize(),
    async:false,
    success: function(response){
      if ($.trim(response) === '1') {
        M.toast({html: 'I am a toast!'});
      }else if ($.trim(response) === '0') {
        M.toast({html: 'I am a not toast!'});
      }
    },
  });
});

不得不修剪响应并设置 async:false,它现在可以工作了。


推荐阅读