处理jquery ajax重定向

我正在拨打$ .get来拨打服务’A’。 服务’A’返回我在页面上显示的纯文本。 但有时它会重定向到服务’B’,返回纯文本。 但是,我无法处理服务’B’的响应文本。 我怎么做?

我无法certificate,但我希望这个脚本可以指导您找到解决方案:

您必须certificate您的状态差异或来自“a.php”的每种响应类型的文本

$.ajax({ type: "GET", url: "a.php", complete: function (XMLHttpRequest, textStatus) { if (XMLHttpRequest.status!=200) // or responseText { var fn = arguments.callee; var _this = this; setTimeout(function(){fn.call(_this, XMLHttpRequest, textStatus);}, 200); } else { //ok } } }); 

或编辑:

  complete: function xCompleteFunction(XMLHttpRequest, textStatus) { if (XMLHttpRequest.status!=200) // or responseText { var _this = this; setTimeout(function(){xCompleteFunction.call(_this, XMLHttpRequest, textStatus);}, 200); } else { //ok } } 

函数调用自身

编辑二:

将redirect.html:

           

a.php只会:

  

b.php:

  

重要: 状态代码定义

不能在javascript中这样做。 您可以更改服务器端行为。

静默(透明)重定向是XMLHttpRequest规范的一部分(请参阅此处特别是“……透明地遵循重定向…”)。 标准仅提到用户代理(Web浏览器)可以阻止或通知某些类型的自动重定向,但它不是XMLHttpRequest的一部分。 它是HTTP客户端配置(操作系统配置)或Web浏览器配置的一部分

如果服务B正在侦听不同的域,则禁止此类跨域AJAX调用,除非有crossdomain.xml文件允许它。

服务’A’和’B’的本质是什么? 一个更简洁的解决方案是处理服务器端的差异。 例如,如果服务A是PHP脚本……

  

或者,如果这些服务是文本文件,您可以使用第三个文件来做出决定,并包括服务A或B。 例如,这可能是ajax.php,你可以在所有情况下调用ajax.php:

  

从它的声音来看,你的条件将是file_exists("a.txt") ,但这只是我的猜测。

祝你好运,如果你有任何问题请评论!