如何在IIS服务器端使用JSON(.parse()/ .stringify())

时间:2013-12-09 23:45:40

标签: json serverside-javascript

几乎我所有的服务器访问都是通过AJAX ...我的服务器端文件打开与我的sql-server数据库的连接,并写入或读取当前表。

我将我的数据保存在我的sql-server表中作为JSON字符串。例如:

[ {"score":"game","bet":"20"},
  {"score":0,"bet":"10"},
  {"score":1,"bet":"11"},
  {"score":2,"bet":"12"},
  {"score":3,"bet":"13"},
  {"score":4,"bet":"14"},
  {"score":5,"bet":"15"},
  {"score":6,"bet":"16"},
  {"score":7,"bet":"17"},
  {"score":8,"bet":"18"},
  {"score":9,"bet":"19"}
]

我发现我需要在服务器上进行一些验证和验证。理想情况下,我想将这个字符串从表中拉出来,将其转换为JSON(通过我认为的JSON.Parse())执行验证/验证,然后根据结果将响应返回给客户端。

我查看了Node.js,但我不能将我的整个服务器从IIS移动到Node.js.理想情况下,我希望能够在标准ASP页面中处理javascript。

* 2013年12月13日星期五 * ** * ** * **** < / p>

以下是AJAX调用文件的大部分源代码:

&LT;%@ LANGUAGE = “JAVASCRIPT” %&GT;

<script runat="server" src="scripts/json2.js"></script>

&LT;%

var JSONstr;
var GridId;
var password;
var where;

var adoConn;
var adoComm;
var adoRS;

var json;

adoConn = Server.CreateObject("ADODB.Connection");
adoComm = Server.CreateObject("ADODB.Command");
adoRS = Server.CreateObject("ADODB.Recordset");

adoConn.ConnectionString = footballConnStr;
adoConn.Open();

GridId=Request.Form('GridId');

where = "Id = '" +GridId +"'"
password=Request.QueryString('password');

adoRS.ActiveConnection = adoConn;
adoRS.CursorType = 3; // So I can use RecordCount Property

adoRS.Source="SELECT GridBets FROM _Games WHERE " +where

// * *这是我的小测试,看看来自JSON2.js的JSON对象是否正在加载

json = {};
JSONstr = JSON.stringify(json); // it is failing on this line...

// **

adoRS.Open();
    var rslt = "{ digits:" +adoRS('GridBets') +"}";
adoRS.Close();

Response.Write( rslt );
Response.End();

/ *

2 个答案:

答案 0 :(得分:0)

最好的办法是为ASP使用JSON库。你有没有说明你是否使用经典的ASP?

ASP.NET的一些选项:

SO上还有许多类似的问题:

答案 1 :(得分:0)

您即将找到解决方案。 json2.js可以使用VB或Javascript与ASP Classic完美配合。

但是,当您使用<%@ language =“ javascript”%>初始化程序时,<%%>之间的所有代码都将在服务器端JavaScript包含之前执行。

因此,正在运行的解决方案可以是将您的javascript代码放在外部JS文件中,或将其设置为 script runat =“ server” 之间的asp文件,而不是 <%%>

json.asp示例:

def append_md(lst, idx, value):
    for i in idx:
        lst = lst[i]
    lst.append(value)

append_md(bins, idx, obj)

输出为:

<%@ language="javascript" %> 
<script language="javascript" runat="server" src="json2.js"></script>
<script language="javascript" runat="server">
    var s = JSON.stringify({aaa: "bbb"});
    Response.Write(s + '<br>');
    var obj = JSON.parse('{"ccc": "ddd"}');
    Response.write(obj.ccc + '<br>');
</script>
<script runat="server" language="vbscript">
    response.write "some vbscript code<br>"
</script>
<% 
    try{        
        var obj = {a: "a", b: "b"};
        Response.Write(JSON.stringify(obj));
    }catch(e){
        Response.Write("ERR: " + e.message + "<br>")
    }
%>

如您所见,我们在{“ a”:“ b”}之前获得了“ ERR:”输出,因为<%%>之间的代码是在脚本标记之间运行任何服务器端JavaScript之前执行的。 但是,您看到脚本标记之间的vbscript代码在执行任何其他操作之前都已执行,即使在之后定义!