【问题标题】:How to read json array from local json file using javascript in global.asa file?如何使用 global.asa 文件中的 javascript 从本地 json 文件中读取 json 数组?
【发布时间】:2019-09-06 15:54:56
【问题描述】:

我正在使用 db 连接来获取 global.asa 中的数据。 现在,我想从本地 json 文件而不是 db 连接中获取数据。

我知道在 global.asa 中可以同时使用 VBscript 和 javascript。 我想使用 javascript 从本地 json 文件中获取 json 数组。 得到json数组后,需要将json的几个变量设置为session变量。

这是我原来的 global.asa 文件。

<SCRIPT LANGUAGE=VBScript RUNAT=Server>
Sub Session_OnStart
Const adOpenForwardOnly = 0
....

myConnection = "DRIVER={MySQL ODBC 3.51 Driver}; SERVER=localhost; PORT=3306; DATABASE=FirstAuto_; USER=xxxx; PASSWORD='xyz'; OPTION=0;"


set cnn = server.createObject("ADODB.connection")
cnn.ConnectionString = GloConnectionString
cnn.CursorLocation = adUseClient
cnn.open myConnection
Set rs = Server.CreateObject("ADODB.Recordset")

if instr(Request.ServerVariables("server_name"),"www.") Then
request_url =  Request.ServerVariables("server_name")
Else
request_url = "https://www." &   replace(Request.ServerVariables("server_name"),"mobile.","")
Response.Status="301 Moved Permanently" 
Response.AddHeader "Location", request_url
'Destroys the Session. So that future calls will retrigger this code. 
Session.Abandon 
'Sends buffered output immediately. 
Response.Flush 
'Stops processing the .asp file and returns the current result. 
Response.End 
response.redirect "https://www." & Request.ServerVariables("server_name")
End If


mySQL = "SELECT websites.id AS website_id, websites.city as Market, websites.state, websites.state_abrev,"&_
        " websites.county, websites.company, websites.google_tag, websites.latitude,"&_
        " websites.longitude, websites.zoom, websites.dbUserName, "&_
        " websites.hp_slider,  websites.finance, websites.warranty, websites.theme, websites.autonet_url,"&_
        " websites.autonet_key,  websites.ppc, websites.website_url, websites.general_auto,"&_
        " websites.estimates, websites.type, websites.shareThis, websites.owner_id "&_
        " FROM websites where websites.website_url = 'http://" & request_url & "'"  

set rs=cnn.execute(mySQL)
session("url") = replace(rs("website_url"),"http:","https:")
session("website") = cInt(rs("website_id"))
session("hp_slider") = cInt(rs("hp_slider"))

rs.close
set rs = nothing
cnn.Close
Set cnn = Nothing

End Sub


</SCRIPT>

我想使用本地 json 文件中的 json 数组设置会话值,例如 url、网站、hp_slider。

【问题讨论】:

  • 您必须做的一件事是找到(或编写)一个 JSON 解析器,因为 JScript 没有内置的。已经有一些,您必须尝试它们并决定哪个你喜欢。您还应该尝试从 VBScript 调用 JScript,这非常简单。
  • P.S.如果您使用 VBScript JSON 解析器,您甚至不需要跨越 JScript 边界。
  • 我在带有 js 的经典 ASP 中使用它,它工作正常:JSON.org/json2.js
  • 谢谢@PeterVC。

标签: json vbscript asp-classic jscript


【解决方案1】:

我知道它可以同时使用 VBscript 和 javascript global.asa

是的。由于您正在考虑解析 JSON,我可能会推荐这种方法来最大程度地减少您的编码工作。注意:不利的一面是,这种方法确实有更高的资源开销,因为 JScript 和 VBScript 引擎都是在内存中加载的。

对于本示例,只需打开并读取 JSON 文件的内容,然后将 JSON 内容 eval() 到本地 JScript 变量中,然后将值分配给 Session 变量:

<SCRIPT LANGUAGE=JScript RUNAT=Server>
var t = null;
with (new ActiveXObject("Scripting.FileSystemObject")) {
    with (OpenTextFile("my.json", 1)) {
        t = ReadAll();
        Close();
    }
}

var myJson = null;
eval("myJson = " + t);
Session("myjson_url") = myJson.url;
Session("myjson_website") = myJson.website;
Session("myjson_hp_slider") = myJson.hp_slider;
</SCRIPT>

对于上面的示例,我使用了这个 my.json 文件:

{"url": "http://www.somewhere.com/path/page.htm", "website": "somewhere.com", "hp_slider": 50}

它很可能只是一个 JSON 数组。

希望这是有用的。

【讨论】:

  • 谢谢@leeharvey1
猜你喜欢
  • 2016-10-02
  • 1970-01-01
  • 2017-04-18
  • 2021-09-19
  • 1970-01-01
  • 1970-01-01
  • 2011-10-06
相关资源
最近更新 更多