我们的web应用程序将被部署为带有SSO的系统的一部分。会话超时后,我的xmlhttprequest被重定向到登录页面,我们无法控制这一点。
在每个AJAX响应处理程序上,我必须检查响应文本是否为完整的HTML页面。(HTML片段和JSON是有效的响应)
我必须承认我对客户端技术很陌生。我捕获完整的HTML页面,像这样:
if (data.search(/<html>/) > -1) { ... }
我认为这是非常低效的,依赖于我们的惯例,并且可能在将来引入微妙的错误。特别是考虑到整个web浏览器的主要目的是解析HTML…
请分享更多优雅的解决方案来识别文本作为完整的HTML文档!
(JQuery已经在项目中使用)
关闭编辑:
我在选择接受一个答案时有点为难,因为解决方案似乎是评论中两个加号想法的组合:
我将有单独的验证器JSON和HTML片段:
我期待JSON,响应必须是JSON。
我期待一个HTML片段(而不是一个完整的文档)的响应必须以结束标记结束(忽略空格),但不是(不区分大小写)。SSO登录页面必须结束于,我们将记录此"限制"
感谢大家的贡献!
如果您想检查响应是否为完整的HTML页面,您可能希望从末尾开始查看,不是吗?检查</html>
是否在末端不会浪费太多性能。如果你不希望这样,请澄清你所说的完整的HTML页面是什么意思
您可以在响应中使用parseJson()。如果它返回一个对象,那就是json,否则就是html片段
responsetrial = $.parseJson(response);
if(typeof reponsetrial ==='object'){
//it's json
}else{
//it's html