Javascript 检测浏览器加载的JSON

Javascript 检测浏览器加载的JSON,javascript,json,jsp,Javascript,Json,Jsp,我有一个应用程序,其中大多数请求是通过AJAX提交的,尽管有些请求是通过“常规”HTTP请求提交的。如果提交请求且用户会话超时,则返回以下JSON: {"authentication":"required"} 提交所有AJAX请求的JavaScript函数通过显示弹出消息并将用户重定向回登录页面来处理此响应 但是,当非AJAX请求收到此响应时,JSON将简单地显示在浏览器中,因为响应是由浏览器直接处理的(即,绕过前面提到的JavaScript函数)。显然,这并不理想,我希望接收此响应的非AJA

我有一个应用程序,其中大多数请求是通过AJAX提交的,尽管有些请求是通过“常规”HTTP请求提交的。如果提交请求且用户会话超时,则返回以下JSON:

{"authentication":"required"}
提交所有AJAX请求的JavaScript函数通过显示弹出消息并将用户重定向回登录页面来处理此响应

但是,当非AJAX请求收到此响应时,JSON将简单地显示在浏览器中,因为响应是由浏览器直接处理的(即,绕过前面提到的JavaScript函数)。显然,这并不理想,我希望接收此响应的非AJAX请求的行为与AJAX请求相同。为了实现这一目标,我可以想出两种选择:

  • 检查应用程序并将所有请求转换为AJAX请求。这会起作用,但也可能需要很长时间

  • 上面显示的JSON是由一个非常简单的JSP生成的。我想知道是否有可能在这个JSP中添加一个JavaScript事件处理程序,这个JSP是在内容显示在浏览器中之前运行的——我假设AJAX请求永远不会调用它?此处理程序可以调用显示弹出窗口并执行重定向的其他JavaScript代码

  • 如果有人知道我如何准确地实现我在(2)中概述的处理程序,或者有任何其他潜在的解决方案,我将非常感谢他们将它们传递给我

    干杯,
    不要更改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);
    }