在监视客户机上的事件时,是否有办法判断ajax是否被重定向?
当一个jsf ajax被重定向时,客户端会收到一个状态代码success,responseCode为200,responseXML为null。客户端没有办法知道这是一个重定向吗?在正常情况下,在监视客户机上的事件时,是否有办法判断ajax是否被重定向?,ajax,jsf-2,Ajax,Jsf 2,当一个jsf ajax被重定向时,客户端会收到一个状态代码success,responseCode为200,responseXML为null。客户端没有办法知道这是一个重定向吗?在正常情况下,responseXML绝对不能为null。考虑到这一点,您可以如下检查当前JSF ajax响应是否表示重定向,以及它将指向的位置 jsf.ajax.addOnEvent(function(data) { if (data.status == "complete") { var red
responseXML
绝对不能为null
。考虑到这一点,您可以如下检查当前JSF ajax响应是否表示重定向,以及它将指向的位置
jsf.ajax.addOnEvent(function(data) {
if (data.status == "complete") {
var redirect = data.responseXML.getElementsByTagName("redirect");
if (redirect.length) {
var url = redirect[0].getAttribute("url");
// ...
}
}
});
它肯定在
responseXML
中(只需在浏览器的HTTP流量监视器中检查HTTP响应)。否则JS无论如何都无法执行重定向作业。您究竟是如何获取它的,以便它是null
而不是一个具体的XML文档?显然,您试图以错误的方式获取它。我只需执行如下警报,响应XML显示为null:alert('status='+ajaxData.status+'\n'+'responseCode='+ajaxData.responseCode+'\n'+ajaxData.responseXML);是,浏览器流量监视器显示重定向XML。我只是没有从ajaxData.responseXML中获取。如果没有重定向ajax,ajaxData.responseXML不为null。对我来说很好。显示MCVE并告诉JSF impl/version。发现问题。我试图在中添加一个额外的元素,让我知道重定向是由会话超时引起的。当我添加它时,我添加了元素作为的兄弟。我把它变成了一个孩子,它开始工作了。为什么将其添加为同级会导致reponseXML变为null,这有点超出我的理解。但一旦我将其更改为child,responseXML就会正确返回XML。