Javascript 检测浏览器加载的JSON
我有一个应用程序,其中大多数请求是通过AJAX提交的,尽管有些请求是通过“常规”HTTP请求提交的。如果提交请求且用户会话超时,则返回以下JSON:Javascript 检测浏览器加载的JSON,javascript,json,jsp,Javascript,Json,Jsp,我有一个应用程序,其中大多数请求是通过AJAX提交的,尽管有些请求是通过“常规”HTTP请求提交的。如果提交请求且用户会话超时,则返回以下JSON: {"authentication":"required"} 提交所有AJAX请求的JavaScript函数通过显示弹出消息并将用户重定向回登录页面来处理此响应 但是,当非AJAX请求收到此响应时,JSON将简单地显示在浏览器中,因为响应是由浏览器直接处理的(即,绕过前面提到的JavaScript函数)。显然,这并不理想,我希望接收此响应的非AJA
{"authentication":"required"}
提交所有AJAX请求的JavaScript函数通过显示弹出消息并将用户重定向回登录页面来处理此响应
但是,当非AJAX请求收到此响应时,JSON将简单地显示在浏览器中,因为响应是由浏览器直接处理的(即,绕过前面提到的JavaScript函数)。显然,这并不理想,我希望接收此响应的非AJAX请求的行为与AJAX请求相同。为了实现这一目标,我可以想出两种选择:
不要更改AJAX代码以向GET或POST添加变量:
outputJson=1
您不能以这种方式向JSP添加处理程序。添加到其中的任何内容都将使其成为非JSON生成页面
我可以看到两个选项:
通过将URL参数附加到修改输出的屏幕,向页面添加参数
网址:
将只输出json
网址:
将显示一个可以转发到另一个页面的jsp页面
或
将响应更改为在JSP中包含转发代码,如果直接命中该代码,则该代码将由web浏览器执行。然后让调用AJAX的人去掉转发代码,然后处理剩下的代码。4)阅读“接受”请求HTTP头
然后,在服务器端定制输出:
e、 g
从更智能的错误消息开始,如下所示:
{"error":"authentication required"}
将JSON输出包装到回调中:
errorHandler({"error":"authentication required"});
让处理程序在脚本中等待:
function errorHandler(r) {
alert(r.error);
}
别忘了将其作为text/javascript
发送,而不是application/x-json
function errorHandler(r) {
alert(r.error);
}