在经典ASP页面中编写JSON,以及对Http响应的一般(错误)理解

时间:2016-07-04 10:54:31

标签: javascript http asp-classic response

我有一个经典的ASP页面(VBscript),它在服务器端生成XML,然后是Response.Writes。该页面根本没有客户端。

但是我需要将其转换为JSON。由于我找不到一个有效的ASP服务器方式(完全不同的主题),我在客户端使用我找到的Javascript代码完成了它,最后将文档写入页面。

问题是结果不一样:如果在http RESPONSE之前只是一个XML,那么响应现在是javascript代码,它向浏览器写入JSON,但不向响应写入。我明白了吗?

换句话说,如果在我有一个xml作为响应之前,现在响应是这样的:

    <script type="text/javascript">     
        var xmlObj = parseXml('<%=resultXml%>');    
        var json = xml2json(xmlObj);    
        document.write(json);
    </script>   

整个块由ASP在这样的方法中调用:

sub writeJsonResult(resultXml) 
% > 

        the above javascript is here

< %     end sub
% >

再次,显然浏览器显示JSON,但使用它的服务没有得到它需要的RESPONSE。有没有办法将JSON写为响应?我觉得我错过了一些东西,并不太了解这一点。

2 个答案:

答案 0 :(得分:3)

该服务期望获得JSON。

您正在为其提供一个HTML文档,其中包含将JSON动态写入页面的客户端JavaScript。

你需要给它实际的JSON,所以你需要找到一种使用ASP生成JSON的方法。

答案 1 :(得分:0)

AS @Quentinpointed out;

  

该服务希望获得JSON。

这意味着尝试通过处理JSON客户端来解决这个问题,因为这意味着您已经发送了text/html HTTP响应而不是application/json个响应。 没有解决它你必须处理XML以构建服务器端的JSON结构然后使用

返回它
Response.ContentType = "application/json"

有许多JSON库用于经典ASP,有些好,有些很棒,有些只是非常糟糕。您只需要查看并查看哪一个适合您,如果您正在寻找建议ASPJSON.com可能是使用最广泛的库(但奇怪的是该网站目前似乎已关闭)

如果可能的话,生成XML的地方使用如上所述的库替换它,其中大多数都支持直接从数据库构建JSON结构,从而节省了自己从XML解析和构建JSON。

有用的链接