【问题标题】:How to use JSON (.parse() / .stringify() ) in IIS server-side如何在 IIS 服务器端使用 JSON (.parse() / .stringify() )
【发布时间】:2013-12-27 07:20:30
【问题描述】:

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

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

[ {"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 日星期五 ***********

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

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

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();

/*

【问题讨论】:

    标签: json serverside-javascript


    【解决方案1】:

    您已接近解决方案。 json2.js 可以完美地与 asp classic 一起使用,使用 VB 或 Javascript。

    但是,当您使用 初始化程序时, 之间的所有代码都会在您的服务器端 javascript 包含之前执行。

    因此,运行的解决方案可以是将您的javascript代码放在外部JS文件中,或者将其设置在script runat="server"之间的asp文件中,而不是 .

    示例 json.asp:

    <%@ 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>")
        }
    %>
    

    输出是:

    some vbscript code
    ERR: 'JSON' is undefined
    {"aaa":"bbb"}
    ddd
    

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

    【讨论】:

      【解决方案2】:

      最好的办法是为 ASP 使用 JSON 库。不过,您还没有说明您是否使用的是经典 ASP?

      ASP.NET 的一些选项:

      SO 上也有很多类似的问题:

      【讨论】:

      • 我没有使用 .NET,就我使用 ASP 而言,我使用的是 Classic。
      • 那么在这种情况下,json2.js 会为你工作:stackoverflow.com/questions/1019223/…
      • 我无法让它工作。我尝试使用
      • 可能是值得的——或者至少是错误(如果有的话?)
      • 我将我的源代码添加到了原始帖子的末尾......看起来这就是 StackOverflow 想要的方式。
      猜你喜欢
      • 2015-06-29
      • 2021-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-17
      • 1970-01-01
      • 2018-04-03
      • 1970-01-01
      相关资源
      最近更新 更多