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