Javascript:检查文本是否是有效的完整HTML文档

时间:2011-07-15 12:37:38

标签: javascript ajax optimization

我们的Web应用程序将作为SSO系统的一部分进行部署。会话超时后,我的XmlHttpRequests被重定向到登录页面,我们无法控制它。

在每个AJAX响应处理程序上,我必须检查响应文本是否是完整的HTML页面。 (HTML片段和JSON是有效的响应。)

我必须承认我对客户端技术很陌生。我像这样抓住完整的HTML页面:

if (data.search(/<html>/) > -1) { ... }

我认为这是非常低效的,依赖于我们的惯例,并可能在未来引入微妙的错误。 特别是考虑到整个网络浏览器的主要目的是解析HTML ...

请分享更优雅的解决方案,将文本识别为完整的HTML文档!

(JQuery已在项目中使用。)

关闭编辑:

我选择接受一个答案时,我有点挑剔,因为解决方案似乎是评论中两个加上想法的综合:

我将为JSON和HTML片段分别设置验证器:

  • 我期待JSON,响应必须是JSON。

  • 在我期待HTML片段(而不是完整文档)的情况下,响应必须以结束标记(忽略空格)结束,但不是(不区分大小写)。 SSO登录页面必须结束,我们将记录此“限制”。

感谢大家的贡献!

2 个答案:

答案 0 :(得分:1)

如果您想检查响应是否是完整的HTML页面,您可能想要开始查看结尾,不是吗?检查</html>是否在最后并不会浪费太多性能。如果您不想这样,请通过完整的HTML页面澄清您的意思。

答案 1 :(得分:1)

您可以在回复中使用parseJson()。如果它返回一个对象,则它是一个json,否则它是一个html片段

responsetrial = $.parseJson(response);

if(typeof reponsetrial ==='object'){
//it's json
}else{
//it's html