Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在监视客户机上的事件时,是否有办法判断ajax是否被重定向?_Ajax_Jsf 2 - Fatal编程技术网

在监视客户机上的事件时,是否有办法判断ajax是否被重定向?

在监视客户机上的事件时,是否有办法判断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

当一个jsf ajax被重定向时,客户端会收到一个状态代码success,responseCode为200,responseXML为null。客户端没有办法知道这是一个重定向吗?

在正常情况下,
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。