我有一个经典的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写为响应?我觉得我错过了一些东西,并不太了解这一点。
答案 0 :(得分:3)
该服务期望获得JSON。
您正在为其提供一个HTML文档,其中包含将JSON动态写入页面的客户端JavaScript。
你需要给它实际的JSON,所以你需要找到一种使用ASP生成JSON的方法。
答案 1 :(得分:0)
AS @Quentin有pointed out;
该服务希望获得JSON。
这意味着尝试通过处理JSON客户端来解决这个问题,因为这意味着您已经发送了text/html
HTTP响应而不是application/json
个响应。
没有解决它你必须处理XML以构建服务器端的JSON结构然后使用
Response.ContentType = "application/json"
有许多JSON库用于经典ASP,有些好,有些很棒,有些只是非常糟糕。您只需要查看并查看哪一个适合您,如果您正在寻找建议ASPJSON.com可能是使用最广泛的库(但奇怪的是该网站目前似乎已关闭)
如果可能的话,生成XML的地方使用如上所述的库替换它,其中大多数都支持直接从数据库构建JSON结构,从而节省了自己从XML解析和构建JSON。