ajax 出現 error 時做跳轉但失敗?

ajax

 error: function(jqXHR, textStatus, errorThrown) {
      errorGo(textStatus, errorThrown);
    },

errorGO()

function errorGO(status, error){
  console.log('textStatus: %s, errorThrown: %s', status, error, location, type);
  alert('Something went wrong :(');
  $.ajax('https://xx.x.com/x/query.php', {
    type: 'POST',
    data: {
      'message': status,
      'error': error
    },
    dataType: "text",
    crossDomain: true,
    success: function(){
      location.href = '/wrong';
      console.log('go /wrong');
    }
  });
  return;
}

query.php

將 status 和 error 丟到數據庫

怪異的是:確實有順利丟數據庫。但是就是沒有執行 location.href = '/wrong'; 跳轉?
這是哪裡有問題?還是說可以有更好的寫法避免這個問題?

阅读 2.7k
3 个回答

根据你的代码,有两种可能:

  1. alert 是同步的,会阻止后面代码的执行,所以没有跳转
  2. 第二个 ajax 返回失败

如果你点了 alert 的弹出框没有跳转,就是第二个原因;没点弹出框当然也不会跳转,就是第一个原因。

楼主,你好!确认下这个请求是否成功,如果成功了,success 方法是否执行到了,可以 console.log() 下。也可以把 fail 方法放出来,执行下

你把return删了试试

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题